循环通过具有一个元素的复选框数组

时间:2012-11-08 22:12:53

标签: javascript forms checkbox

我有一个动态创建的复选框列表,名为" tags"我用javascript循环,以确保只检查1并获取值。如果由于某种原因,这个复选框列表只有1个项目,我的脚本不会看到它。当我提醒标签的长度时,我得到了未定义。

    var total=[];
    for (var i=0; i < document.form1.tags.length; i++){
        if(document.form1.tags[i].checked==true){
            total.push(document.form1.tags[i].value);
        }
    }

    if(total.length==0){
        alert("Please select a product to edit.");
    }else if (total.length>1){
        alert("Please select only one product to edit.");
    }else{
        document.location = "go somewhere";
    }

4 个答案:

答案 0 :(得分:4)

为什么需要Checkboxes? 这不是一个使用Radiobuttons的好机会吗?

答案 1 :(得分:2)

两个建议:

  1. 使用getElementsByName来获取所有元素,以便您可以迭代它们:

  2. 使用像jquery这样的框架。你有什么理由不能使用jquery或其他框架吗?你的生活会变得如此简单。

  3. var tags = document.getElementsByName('tags');
    for(var i = 0; i < tags.length; ++i)
    {
        if(tags[i].checked) .....
    }
    

答案 2 :(得分:2)

你想要单选按钮。

<input type='radio' name='tags' value='[whatever]' />

您不必'检查并确保只选择一个'。并获得

var tags = document.getElementsByName('tags'),
    value = '', i = 0;

for( ; i < tags.length; i++ )
{
    if( tags[i].checked ) {
        value = tags[i].value;
        break;
    }
}

答案 3 :(得分:-1)

从我的头顶...如果只选择了一个复选框,则可能是document.form1.tags不是数组......