ID不允许以数字开头,必须以字母开头。所以document.getElementById(1234)
将失败(我认为IE可能不会说出任何东西并允许它,但FF不起作用)。只要在号码前加一个字母并将getElementById更改为document.getElementById('cb'+id2);
即可。
此外,只是一个方面说明,如果您通过this
函数onClick
,该参数是对被单击元素的引用。所以没有必要得到box.id
,然后做document.getElementById(checkId)
。从技术上说document.getElementById(checkId)
是=== box
所以你可以只说box.checked
。
http://www.w3.org/TR/html4/types.html#h-6.2。这是关于ID属性命名要求的规范:
ID和名称标记必须以字母([A-Za-z])开头,后面可以跟随任意数量的字母,数字([0 -9]),连字符(“ - ”),下划线(“_”),冒号(“:”)和句点(“。”)。
编辑:
甚至比使用document.getElementById()
选择每个复选框,是使用document.getElementById()
父元素所需的复选框以禁用共享(如它们在表)然后使用document.getElementsByTagName('input')
获取所有复选框的集合,并使用该复选框进行循环/禁用。所以JS代码禁用会是什么样子:
一些表:
<input type='checkbox' onClick='checkCBs(this,"someTable1");'>
<table id='someTable1'>
<tr>
<td>This is checkbox 1:</td>
<td><input type='checkbox' name='group1' value='checkbox1'></td>
</tr>
<tr>
<td>This is checkbox 2:</td>
<td><input type='checkbox' name='group1' value='checkbox2'></td>
</tr>
</table>
代码:
function checkCBs(box, parent){
var parent = document.getElementById(parent),
CBs = parent.getElementsByTagName('input'),
i;
//loop through all input elements
for(i=0;i<CBs.length;i++){
//make sure the input is a checkbox
if(CBs[i].type && CBs[i].type=='checkbox'){
//set disabled on this checkbox to opposite
//of whether box is checked.
CBs[i].disabled = !box.checked;
}
}
}
粘贴在这里,而不是外部源代码。并且记住要清除它的语法,因为没有人喜欢读杂乱的代码。 – hsz 2011-04-19 14:10:19
请清理您的代码 – jimy 2011-04-19 14:19:39