无法检查是否选中了javascript复选框数组元素?

无法检查是否选中了javascript复选框数组元素?,javascript,checkbox,Javascript,Checkbox,需要的是-选中复选框时,选择列表中的选项5将被选中,选中复选框时,选择列表中的选项0将被选中 选择列表和复选框在php代码中动态生成,如下所示: echo "<select name='coupons".$i."' id='coupons".$i."'>"; ------- All Options -------- echo "</select>"; <input type='checkbox' name='myCheckbox[]' value='<?p

需要的是-选中复选框时,选择列表中的选项5将被选中,选中复选框时,选择列表中的选项0将被选中

选择列表和复选框在php代码中动态生成,如下所示:

echo "<select name='coupons".$i."' id='coupons".$i."'>";
------- All Options --------
echo "</select>";


<input type='checkbox' name='myCheckbox[]' value='<?php echo $i."_".$row->id; ?>' onclick='setCCode("myCheckbox[]",<?php echo $i;?>)'> 

 -----------------------------------------------------------------------------
function checkAll(parent, field)
{
    var children = document.getElementsByName(field);
    var newValue = parent.checked;

    for (i = 0; i < children.length; i++){
    if (children[i].disabled == false) {    
        children[i].checked = newValue;
    }
    }
}

function setCCode(Sender,i) 
{   
  document.getElementsByName("coupons"+i)[0].selectedIndex = Sender.checked ? 5 : 0;
}
javascript函数:

function setCCode(checkbox_name,i) 
{   
    var form_object = document.getElementsByName(checkbox_name+"["+i+"]");
    var selname = document.getElementsByName("coupons"+i)[0];

    if(form_object.checked) {
            selname.selectedIndex = 5;
    }
    else {
        selname.selectedIndex = 0;
    } 
}
上述问题已得到解决。。。。。。。多谢大家

现在我需要做的是,当用户选中一个复选框,以选择或取消选择表单上所有动态生成的复选框时,上述逻辑应该起作用

<input type='checkbox' name='checkall' onChange="checkAll(this, 'myCheckbox[]')">
<span class="chkall">Check / Uncheck All</span>

<input type='checkbox' name='myCheckbox[]' value='<?php echo $i."_".$row->id; ?>' onclick='setCCode(this,<?php echo $i;?>)'>

选中/取消选中全部

getElementsByName返回一个对象数组。将线路替换为:

var form_object = document.getElementsByName(checkbox_name+"["+i+"]")[0];

如果您对复选框所在的表单有引用,并且表单中有唯一的名称,则您可以通过以下方式访问它:

form_object = form.elements[ checkbox_name + "[" + i + "]" ];
您还可以使用三元运算符使代码更简洁:

selname.selectedIndex = form_object.checked? 5 : 0;
编辑 对不起,错过了明显的机会。如果将引用传递给处理程序中的复选框,则还可以获取表单(所有表单控件都有一个引用它们所在表单的表单属性)。正如Jan Pfeifer所建议的(缩写标记):


可以将引用作为参数传递给复选框本身

<input type='checkbox' name='myCheckbox[]' value='<?php echo $i."_".$row->id; ?>' onclick='setCCode(this,<?php echo $i;?>)'>

function setCCode(Sender,i) 
{   
  document.getElementsByName("coupons"+i)[0].selectedIndex = Sender.checked ? 5 : 0;
}

当我执行你建议的操作时,得到如下错误消息:form_对象未定义源文件:Line:71错误:form_对象未定义源文件:Line:72函数setCCode(checkbox_name,i){var form_object=document.forms[0]。元素[checkbox_name+“[“+i+”]];var selname=document.getElementsByName(“优惠券”+i)[0];selname.selectedIndex=form_object.checked?5:0;}是否按照指定首先将对表单的引用分配给变量表单?
<input ... onclick='setCCode(this, <?php echo $i;?>)'>
function setCCode(checkbox, i) 
{   
    checkbox.form.elements['coupons' + i].selectedIndex = checkbox.checked? 5 : 0;
}
<input type='checkbox' name='myCheckbox[]' value='<?php echo $i."_".$row->id; ?>' onclick='setCCode(this,<?php echo $i;?>)'>

function setCCode(Sender,i) 
{   
  document.getElementsByName("coupons"+i)[0].selectedIndex = Sender.checked ? 5 : 0;
}