2011-11-14 3 views
1

私はテーブルを持っていると私はいくつかのアクションは、JavaScriptでのループのために使用することによって、それに対して実行することにしたいです。だから誰かがそれのためのコードになると私に教えてくれるかもしれない。 forループはテーブルのすべての行に対して機能することになります。実際には、私はテーブルからクラスを削除する必要がありますし、その後、私は特定の行にクラスを適用する必要があります。私の仕事は強調表示しなければならないのは、選択された行を強調表示しないことです。私は任意の行を選択するときに強調表示されますが、私は別の行を選択すると、その強調表示され、残りの1つも。だから私はテーブルのすべての行から選択したクラスを削除し、特定の行の選択したクラスを適用したい。私のコードは次のようになりますjqueryの試みでJavascriptでのループの使用方法、テーブル内の行数に対するjquery?

<style type="text/css"> 
    .highlight 
    { 
     background-color: Red; 
    } 
    .selected 
    { 
     background-color: #ffdc87; 
    } 
</style> 

<script type="text/javascript"> 
    function Select(obj) { 
     if (obj.className != 'selected') { 

      obj.className = 'selected'; 
      var tbl = document.getElementById("Repaddressorbbl") 
      var firstRow = tbl.getElementsByTagName("TR")[0]; 
     } 
     else { 
      obj.className = 'prev_class'; 
      var tbl = document.getElementById("Repaddressorbbl") 
      var firstRow = tbl.getElementsByTagName("TR")[0]; 
     } 
    } 

</script> 
+0

質問は理解できないです。実際に何が必要ですか? jsfiddle.netまたはjsbin.comで実行できないコードスニペットを使用できますか? – ValeriiVasin

+0

更新された質問については、forループは必要ありません.jQueryの1行で行うことができます。既存のコードを表示して、回答を書いている人がそれに合うようにしましょう。 – nnnnnn

答えて

2

あなたがした後、あなたの選択した行

// remove all "highlight" classes from all <tr> elements 
$("#your-table tr").removeClass("highlight"); 

// highlight row 3 
$("#your-table tr:eq(2)").addClass("highlight"); 

// highlight row that belongs to a specific <td> 
$("#my-td").parents("tr").addClass("highlight") 

// etc 

オーバー手動でループする必要はありませんので、jQueryの暗黙の反復を持っていますすべてhighlightのクラスを削除し、あなたはかなり簡単にしたい方<tr>-ハイライトを再することができるはずです。

さらにヘルプが必要な場合、私に知らせて:)

+0

':eq(2)'疑似クラスとは何ですか?それはn番目の子供のようなものですか? –

+0

@MoeSweetそれはまさに正しいことです。このexapmleでは、3番目の ''要素になります。 –

0

var aaa= $('#yourdivid tr:gt(0)'); 
$.each(aaa, function(indx, item) { 
      ////your code 

      } 
+0

jQueryには暗黙的な繰り返しがあるため、このようなタスクを手動で反復する必要はありません。 –

+0

@macek - この答えは、なぜ彼がforループを望んでいたのかを言うために更新されました。 – nnnnnn

+0

@nnnnnnありがとうございます。質問を編集する前にansが投稿されています。 –

0

POJSでは、あなたはすべての行を反復するために、テーブルの行のコレクションを使用することができます。が生きたNodeListです

var rows = tableElement.rows; 
for (var i=0, iLen=rows.length; i<iLen; i++) { 
    /* do something with rows[i] */ 
} 

行。ブラウザによっては、リストが変更されたかどうかがブラウザーによって認識されないため、最初に配列に変換するほうが速い場合があります。

最近のブラウザはそれを行うことがないように十分に賢いですが、関係なく、それだけで大きなテーブルでの問題やパフォーマンスが問題になる場合です。あなたのコードで

var firstRow = tbl.getElementsByTagName("TR")[0]; 

ができ:

var firstRow = tbl.rows[0]; 
関連する問題