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