2013-04-11 34 views
0

我已經得到了以下代碼來切換選擇具有特定名稱的所有複選框。Javascript代碼來選擇複選框不工作在IE8

該代碼在基於webkit的瀏覽器中很好用,但在IE8中完全不起作用。

選擇切換全部,不選擇任何東西。

<label class="checkbox"> 

<input name="product" type="checkbox" id="7553" value="true" title="option1"> 
option1 
</label> 

<label class="checkbox"> 

<input name="product" type="checkbox" id="65693" value="true" title="option2"> 
option2 
</label> 

<label class="checkbox"> 
<input type="checkbox" onClick="toggle(this)"><strong>Select all</strong> 
</label> 

這裏的JS

<script type="text/javascript"> 
function toggle(source) { 
checkboxes = document.getElementsByName('product'); 
for(var i in checkboxes) 
checkboxes[i].checked = source.checked; 
} 
</script> 

有人能看到爲什麼上面在IE8無法正常工作?

感謝

回答

2

可能是因爲你不應該使用對數組for..in(或者,在這種情況下,類似數組的對象)。

試試這個:

for(var i=0, l=checkboxes.length; i<l; i++) { 
    checkboxes[i].checked = source.checked; 
} 
+0

'for..in'使用率不*所有*壞,看到這樣的回答: http://stackoverflow.com/a/9329476/973578 – 2013-04-11 14:10:18

+0

優秀不錯。使用簡單的循環修復了這一點。似乎是一個常見的錯誤。我的帖子可能太倉促了。 – 2013-04-11 14:10:51

+0

我已經稍微改變了這一點,因爲我需要它作用於ID而不是名稱。問題是,儘管我設置了正確的ID,但它現在似乎沒有工作。 – 2013-04-30 08:32:04