2014-11-01 97 views
3

我在我的頁面上有多個複選框和一個「全選」按鈕。我想,當我按下選擇按鈕時,頁面上的所有元素都將被檢查。這是我的javascript代碼嘗試:在javascript中自動檢查複選框

<script> 
 
    function selectall() { 
 
     for (var i = 0; i < document.getElementsByName("ch").length; i++) { 
 
      document.getElementsByName(ch[i]).checked = true; 
 
     } 
 
    } 
 
</script>

這裏」是HTML:

<form action="analize.php" method="POST" enctype="multipart/form-data"> 
 
    <input type="button" onclick="selectall()" value="SELECT ALL" /> 
 
    <input type="checkbox" name="ch[]" value="a" align="MIDLE" /> 
 
    <input type="checkbox" name="ch[]" value="b" align="MIDLE" /> 
 
    <input type="checkbox" name="ch[]" value="c" align="MIDLE" /> 
 
</form>
但它不work.What是PR oblem?

+0

這是巨大的更高效的存儲document.getElementsByName'的'結果和再利用返回的集合'document.getElementsByName(ch [i])。checked = true'會在每次迭代時重新獲得它。另外,存儲長度。因爲它是一個實時集合,所以在檢查之前必須在每次迭代中再次讀取長度,因爲它可能會發生變化。 – RobG 2014-11-01 12:30:41

回答

3

目標元素的name屬性是ch[]而不是ch.getElementsByName(ch[i]) 應該是.getElementsByName('ch[]')[i]

for (var i = 0; i < document.getElementsByName("ch[]").length; i++) { 
    document.getElementsByName('ch[]')[i].checked = true; 
} 

你也可以緩存NodeList這比在每個迭代查詢DOM更高效:

var nodeList = document.getElementsByName("ch[]"); 
for (var i = 0; i < nodeList.length; i++) { 
    nodeList[i].checked = true; 
} 
+0

謝謝,它工作! – 2014-11-01 11:43:02

+0

@sergiureznicencu你很歡迎! – undefined 2014-11-01 11:45:59

+0

@sergiureznicencu:請標記答案,如果它幫助你。很容易識別出最佳答案。 – BNN 2014-11-01 12:21:23