2013-08-05 138 views
0

我陷入了一個非常愚蠢的問題。我試圖選擇我使用表中的循環動態創建的所有複選框。在表格的頭部我有一個複選框,我想在點擊頭部的複選框後選中表格中的所有複選框。 這是我的代碼。使用javascript的onclick檢查複選框?

<table> 
     <thead> 
     <tr> 
     <th class="spacer_100 align_ctr tooltip_trigger"> 
     Change Status <input type="checkbox" name="sample" onclick="selectAll()"> 
     </th> 
     </tr> 
     </thead> 
     <tbody> 

      <?php foreach ($users as $user) { ?> 
      <tr> 
      <td class="align_ctr" style="text-align: center"> 
      <input type="checkbox" name="current_status[]" value="1"/> 
      </td> 
      </tr> 
      <?php } ?> 
     </tbody> 
    </table> 

下面是javascript代碼:

function selectAll() { 
     var checkboxes = document.getElementsByTagName("input"); 
     for(var i=1; i<checkboxes.length;i++) { 
     if (checkboxes[i].type == 'checkbox') { 
     checkboxes[i].checked = 'true'; 
     } 
     } 
    } 

我不知道什麼是錯的這個代碼,我不能夠選擇複選框。

感謝

+0

[我的作品。(http://jsfiddle.net/bG3mm/) – icktoofay

+0

順便說一下,這裏是你的foreach結束標記'<?php endforeach; ?>'? – Raymond

+0

我在我的實際代碼中有foreach的括號,我只是把它放在上面的代碼中,但我仍然不確定爲什麼所有的複選框都沒有選擇。 – user2651516

回答

0

它工作正常,但您的代碼:

var checkboxes = document.getElementsByTagName("input"); 

選擇主複選框爲好,儘量做:

var checkboxes = document.getElementsByTagName("input"); 
for(var i=0; i<checkboxes.length;i++) { //start from 0 
    if (checkboxes[i].type == 'checkbox' && checkboxes[i].name == 'current_status[]') { 
     checkboxes[i].checked = 'true'; 
    } 
} 
+0

感謝您的評論,但仍然不工作:( – user2651516

0

如何試試這個代碼?

更改爲

Change Status <input type="checkbox" name="sample" onclick="selectAll(this)"> 

和下面的函數

function SelectAll(CheckBoxControl){ 
    var i; 
    for (i=0; i < document.forms[0].elements.length; i++){ 
     if ((document.forms[0].elements[i].type == 'checkbox') && 
     (document.forms[0].elements[i].name.indexOf('current_status[]') > -1)){ 
     document.forms[0].elements[i].checked = CheckBoxControl.checked; 
     } 
    } 
} 
+0

不,我在javascript函數中使用斷點檢查,它正在調用每一件事,但仍然沒有看到複選框被選中。是否有可能選擇複選框,但只是它沒有顯示那裏選擇,因爲運行後,我需要點擊兩次這些複選框,使其選擇。 – user2651516

+0

對不起,我不明白你想做什麼.. – Raymond