2

レコードのリストを含むテーブルがあります。各行にはクラス「list_request」があり、クラス「record_approval」のセルがあります。

<table>
<tr>
    <th>name</th><th>date</th><th>id</th><th>group</th><th>approval</th>
<tr class="list_request">
<td>Frank</td><td>2012-2-15</td><td>01</td><td>Account</td><td class="record_approval">Dave Ellis</td>
</tr>
<tr class="list_request">
<td>Ellen</td><td>2012-2-19</td><td>04</td><td>Admin</td><td class="record_approval">Susan Peters</td>
</tr>
<tr class="list_request">
<td>Michael</td><td>2012-2-26</td><td>06</td><td>Admin</td><td class="record_approval"></td>
</tr>

「record_approval」に値(重要ではない)があるかどうかをチェックするjavascript関数を作成し、ある場合は、その行のcssカラー値を変更します。基本的に、承認されたレコードは、承認されていないレコードとは異なる色にする必要があります。何かのようなもの...

function check_approval(){
    var checkrow = document.querySelectorAll( "tr.request_list" )
    var checkcell =  document.querySelectorAll( "td.record_approval" )

    for (i=0;i<checkcell.length;i++){  
    if (!checkcell.value){
        this.parentNode.style.color = "ff9900";
    }  
    else{

    }
}

これは本質的に間違ったアプローチですか?

4

2 に答える 2

2

私が見つけた間違い:

  • 閉じられforていないループ(閉じられていない}
  • あなたはクラスを探していrequest_listますが、あなたのhtmlではそれはlist_request
  • ループ内checkcell[i]ではなく使用する必要がありますcheckcell
  • 色の16進値は。で始まる必要があります#
  • イベントリスナーからすべての行とセルを取得する必要はありません
  • その関数をいつ実行するかは不明です。イベントに対応する必要がありますか?

また、色を直接設定するのではなく、行に新しいcssクラスを設定します。


どうやら、あなたはこれを探しています:

var checkcell =  document.querySelectorAll( "td.record_approval" );
for (i=0;i<checkcell.length;i++){  
    if (checkcell[i].innerHTML){
        checkcell[i].parentNode.style.color = "#ff9900";
    }
}

http://jsbin.com/anadij/1/edit

于 2013-01-24T17:51:04.303 に答える
0
  1. checkcellは要素の配列です。checkcell.valueの代わりに'checkcell[i]'にアクセスして、それらをループする必要があります。
  2. 16進数の色は、ff9900の前に「#」を付けて定義する必要があります
  3. forループが正しく閉じられていません

基本的にそれを更新します

if (!checkcell[i].value){
    checkcell[i].parentNode.style.color = "#ff9900";
} else{

}
于 2013-01-24T17:50:02.397 に答える