2016-09-22 38 views
1

私はテーブルヘッダーにチェックボックスがあるテーブルを持っています。テーブルの下のすべてのチェックボックスを切り替えるために使用されます。ヘッダー内のチェックボックスにJavaScript関数を追加しましたが、これまでのところ、すべての代わりに一番上のチェックボックス(チェックボックス)が1つだけ選択されています。私が間違ってやったことや何を研究するのかに関するアドバイスやアドバイスはありますか?PHPテーブルのチェックボックスを切り替えます

HTMLテーブルのヘッダコード:

<thead> 
    <tr> 
    <th><center><input type="checkbox" value="" id="cbgroup1_master" onchange="togglecheckboxes(this,'cbgroup1')"></center></th> 
    <th>Sender</th> 
    <th>Receiver</th> 
    <th>Subject</th> 
    <th>Date</th> 
    </tr> 
</thead> 

PHPのテーブルコード:

$table .= ' 
      <tr> 
      <td><center><input type="checkbox" id="cb1_1" class="cbgroup1"></center></td> 
      <td><a href="pm_message.php?u='.$log_username.'&pmid='.$pmid.'" onclick="markRead(\''.$pmid.'\',\''.$sender.'\')">'.$sender.'</a></td> 
      <td>'.$receiver.'</td> 
      <td>'.$subject.'</td> 
      <td>'.$time.'</td> 
      </tr>'; 

Javascriptのコード:

function togglecheckboxes(master,cn){ 
    var cbarray = document.getElementsByClassName(cn); 
    for(var i = 0; i < cbarray.length; i++){ 
     var cb = document.getElementById(cbarray[i].id); 
     cb.checked = master.checked; 
    } 
} 
+0

JavaScriptはどこですか。 – Phiter

+0

@PhiterFernandesああ私の良さ!忘れてた!私はちょうどjsコードで質問を更新しました。私に思い出させてくれてありがとう! – Millica

+0

jQueryを使用すると快適ですか?あなたが望むものを達成するのは簡単です。 – Phiter

答えて

1

あたりとして適切な値を使用する必要があります$のPMIDを使用します。

(おそらく)複数のDOM要素に同じIDを使用して

あなたのPHPコードはおそらくチェックボックスを作成するために、ループを使用しているが、あなたがそれらのすべて「cb1_1」に同じIDを使用していることを示唆しています。 @atulと同じです。あなたはすべての入力のために同じIDを使用しているので

は不適切 var cb = document.getElementById(cbarray[i].id);が常に同じ要素を返し、あなたのチェックボックス要素 を選択します。それを解決する方法は@atul

で別の方法を提供するソリューションを使用することで、次のようにあなたのjavascriptを書き換えることである:

function togglecheckboxes(master,cn){ 
    var cbarray = document.getElementsByClassName(cn); 
    for(var i = 0; i < cbarray.length; i++){ 
     var cb = cbarray[i]; 
     cb.checked = master.checked; 
    } 
} 

(あなたcbarrayはすでにあなたのチェックボックスの配列なので、それは冗長ですあなたは既にcbarray[i]とそれを持っているときに要素を得るためにdocument.getElementById(cbarray[i].id)を呼び出すことができます。

+0

ありがとう、Atulにもありがとう。私は本当にテーブルIDが選択されていると考えていたはずです。物事を私の注意を引くことに感謝します。すべてが今働きます!素晴らしい学習体験! – Millica

+0

@Millica奉仕の喜び。あなたのプログラミングの旅に幸運を祈る! – Giorgiolino

2

問題は、あなたが同じIDを設定している(cb1_1)すべてのチェックボックス(これはHTMLでは無効です)へのIDは、ページ。したがって、最初に見つかったチェックボックスを選択し、残りのものを破棄します。これを解決するには、ユニークなIDをチェックボックスに付けます。

$table .= ' 
      <tr> 
      <td><center><input type="checkbox" id="cb1_'.$pmid.'" class="cbgroup1"></center></td> 
      <td><a href="pm_message.php?u='.$log_username.'&pmid='.$pmid.'" onclick="markRead(\''.$pmid.'\',\''.$sender.'\')">'.$sender.'</a></td> 
      <td>'.$receiver.'</td> 
      <td>'.$subject.'</td> 
      <td>'.$time.'</td> 
      </tr>'; 

注:私はちょうどちょうど例として、あなたは私はあなたのコードで2つの問題を参照してくださいあなたのシナリオ

関連する問題