javascript - 内部 html 单选按钮数组值被写入 for 循环

标签 javascript html

我写了这段代码,它应该简单地显示用户基于点击的单选按钮的选择,一种形式有多组单选按钮

<form name="makePicks">
    <label class="green">
        <input type="radio" id="x" onclick="handleClick()" name="picks1" value="Chiefs"><span>Chiefs</span>

        </label>
        <label class="yellow">
            <input type="radio" onclick="handleClick()" name="picks1" value="Hurricanes"><span>'Hurricanes'</span>

        </label>
        <label class="pink">
            <input type="radio" name="picks1" value="draw" onclick="handleClick()"><span>Draw</span>

        </label>
        <br />
        <label class="green">
            <input type="radio" id="x" onclick="handleClick()" name="picks2" value="Lions"><span>Lions</span>

        </label>
        <label class="yellow">
            <input type="radio" onclick="handleClick()" name="picks2" value="Stormers"><span>'Stormers'</span>

        </label>
        <label class="pink">
            <input type="radio" name="picks2" value="draw" onclick="handleClick()"><span>Draw</span>

        </label>
        <br />
    </form>
    <div id="dispPicks">
            </div>

function handleClick() {
    // Get all the inputs.
    var inputs = makePicks.elements;
    var radios = [];

    //Loop and find only the Radios
    for (var i = 0; i < inputs.length; ++i) {
        if (inputs[i].type == 'radio') {
            radios.push(inputs[i]);
        }
    }

    //var found = 1;
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].checked) {
             document.getElementById("dispPicks").innerHTML="YOU HAVE SELECTED "+radios[i].value
            //found = 0;
            //break;
        }
    }
    //if (found == 1) {
        //alert("Please Select Radio");
        //}
        //event.preventDefault(); // disable normal form submit behavior
        return false; 
    }

我的问题是

数组 radios[i].value 的值被覆盖,如下图所示

enter image description here

在此示例中,cheifs 和 Stormers 都需要显示,因为它已被选中

如果有人能帮助我正确实现,将不胜感激

我在这个链接上创建了一个 fiddle https://jsfiddle.net/taditdash/w8hpQ/

最佳答案

您可以像这样修改您的 JavaScript 代码:

function handleClick() {
    // Get all the inputs.
    var inputs = makePicks.elements;
    var radios = [];

    //Loop and find only the Radios
    for (var i = 0; i < inputs.length; ++i) {
        if (inputs[i].type == 'radio') {
            radios.push(inputs[i]);
        }
    }

    myradiovalue = "";

    for (var i = 0; i < radios.length; i++) {
        if (radios[i].checked) {
            if (myradiovalue=="")
                myradiovalue=radios[i].value
            else
                myradiovalue=myradiovalue+ ", " +radios[i].value    
        }
    }

    document.getElementById("dispPicks").innerHTML = "YOU HAVE SELECTED " + myradiovalue;
    return false; 
}

关于javascript - 内部 html 单选按钮数组值被写入 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347894/

相关文章:

javascript - 在页面加载时显示 AJAX 加载程序

javascript - 需要有关 redux 和服务器端更新的建议

javascript - FB.login() 响应不一致

javascript - 当一个列表包含一个 'Button' 元素时,我怎么能只找到列表的值,但是按钮

html - 如何描边 sv​​g 路径的 "marker-end"?

javascript - React Router - 无法在路由中使用 MATCH PARAMS 和应用程序状态

javascript - 尝试显示json内容

javascript - 如何在剑道网格中自动启用或禁用滚动条?

jquery - 使用 jQuery 加载更多(无 AJAX/PHP)

html - Bootstrap 对齐项无法按预期工作