我刚刚开始使用javascript,所以请原谅我,如果我的问题看起来很愚蠢。我想设计一个带有一些复选框的网页,以便在选中第一个时,其他复选框变为启用状态。我怎么用JS做到这一点?我写了以下代码:
function checkBox() {
if (window.document.form1.mainbox.checked=true) {
for (i=0;i<window.document.form1.Others.length;i++) {
window.document.form1.Others[i].disabled=false;
}
}
else {
for (i=0;i<window.document.form1.Others.length;i++) {
window.document.form1.Others[i].disabled=true;
}
}
}
这个html:
<form name="form1">
<input name="mainbox" value="mainbox" onclick="checkBox()" type="checkbox"> Mainbox<br>
<input disabled="disabled" checked="checked" tabindex="0" name="Others" type="checkbox">No. 1<br>
<input disabled="disabled" checked="checked" tabindex="1" name="Others" type="checkbox"> No. 2<br>
<input disabled="disabled" checked="checked" tabindex="2" name="Others" type="checkbox"> No. 3<br>
</form>
问题是,在第一次点击时,其他复选框确实已启用,但后续点击没有任何反应,即它们不会再次被禁用。我该如何解决这个问题?任何帮助将不胜感激。谢谢!
修改
我遵循了gabitzish的建议并且有效。但是,我现在想将Others作为参数传递,所以我写道:
<input name="mainbox" value="mainbox" onclick="checkBox(Others)" type="checkbox"> Mainbox<br>
并按如下方式修改脚本:
window.checkBox = function(chkname) {
if (window.document.form1.mainbox.checked==true) {
for (i=0;i<window.document.form1.chkname.length;i++) {
window.document.form1.chkname[i].disabled=false;
}
}
else {
for (i=0;i<window.document.form1.chkname.length;i++) {
window.document.form1.chkname[i].disabled=true;
}
}
}
但这不起作用。请帮帮我。我将非常感激。
答案 0 :(得分:2)
此行有错(您错过了a =)
if (window.document.form1.mainbox.checked=true)
尝试将其更改为
if (window.document.form1.mainbox.checked)
答案 1 :(得分:1)
我已经使用您的代码创建了一个jsFiddle,并进行了一些小的更改:http://jsfiddle.net/CUeDg/1/
原始代码的问题是在点击时找不到checkBox()函数。
修改强> 以下是稍后修改问题的解决方案:http://jsfiddle.net/CUeDg/3/ 我已将param作为字符串传递给函数。
稍后编辑: 我怀疑你需要那个参数来知道你需要切换的复选框集。我也为此做了一个jsFiddle:http://jsfiddle.net/CUeDg/5/ (如果我怀疑错了,不要考虑这部分答案)