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

Javascript 循环通过具有一个元素的复选框数组,javascript,forms,checkbox,Javascript,Forms,Checkbox,我有一个名为“tags”的动态创建的复选框列表,我使用javascript循环遍历这些复选框,以确保只选中1并获取值。如果出于某种原因,此复选框列表只有一项,我的脚本将不会查看它。当我提醒标签的长度时,我没有定义 var total=[]; for (var i=0; i < document.form1.tags.length; i++){ if(document.form1.tags[i].checked==true){ tota

我有一个名为“tags”的动态创建的复选框列表,我使用javascript循环遍历这些复选框,以确保只选中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";
    }
var-total=[];
对于(var i=0;i1){
警告(“请仅选择一个要编辑的产品”);
}否则{
document.location=“去某处”;
}

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

两条建议:

  • 使用
    getElementsByName
    获取所有元素,以便可以迭代它们:

  • 使用类似jquery的框架。有什么原因不能使用jquery或其他框架吗?你的生活会轻松得多

  • var tags=document.getElementsByName('tags');
    对于(变量i=0;i
    为什么需要复选框?
    这不是一个很好的利用机会吗

    您需要单选按钮

    <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;
        }
    }
    
    var tags=document.getElementsByName('tags'),
    值='',i=0;
    对于(;i
    .tags
    在只有一个复选框时不是数组,它包含对一个复选框的直接引用。只有当存在多个同名复选框时,它才会成为节点列表。您应该始终查看开发人员控制台,您可能会在那里看到错误。@Esailija使用
    querySelectorAll
    或jQuery的另一个原因。不能使用单选按钮。根据按下的按钮,允许进行多项选择。
    var tags = document.getElementsByName('tags'),
        value = '', i = 0;
    
    for( ; i < tags.length; i++ )
    {
        if( tags[i].checked ) {
            value = tags[i].value;
            break;
        }
    }