2016-07-25 3 views
0

カスケードクラスを読み込んだ後にカスケードクラスを適用しようとしています。私はjavascriptのすべてを確認して、コントローラのメソッドはtbodyから行を取得しようとするまで動作します。ここにはJavaScriptがあります。javascriptのtbodyから行と列を取得するにはどうすればよいですか?

jQuery(document).ready(function() { 
    var calendar = $('#Trafikkalender'); 
    var date = $('#selectedDate').val(); 
    var param = { date: date } 
    var url = $('#calArrayPostUrl').data('url'); 
    $.post(url, param, function(data) { 
     var body = calendar.find('tbody'); 

     //var rows = body.getElementsByTagName('tr'); 
     var rows = body.rows; 

     for (var i = 0; i < rows.length; i++) { 
      //var cols = rows[i].getElementsByTagName('td'); 
      var cols = rows[i].cells; 
      for (var j = 0; cols.length; j++) { 
       var col = cols[j]; 
       col.addClass(data[i][j]); 
      } 
     } 
    }); 
}); 

私がデバッガの行をクロムに乗せると、行が定義されていません。あなたが見ることができるように私は別のアプローチを試みましたが、getElementsByTagNameはchromeによる関数ではありません。

var rows = body.find('tr'); 

同じことがあまりにもtd要素に使用することができます。

+0

jQueryには '.addClass()'メソッドがありますか? –

+0

内側のループの底を見てください – inifus

+0

その関数が実際に定義されていれば(私はそう思わない)、 'col'はjQueryオブジェクトではないので、' jQuery.addClass() 'にすることはできません。私は詳細で答えを作った。 –

答えて

2

あなたは、このことができます。この

$.post(url, param, function(data) { 
    var body = calendar.find('tbody'); 
    var rows = body.find('tr'); 

    for (var i = 0; i < rows.length; i++) { 
     var cols = $(rows[i]).find('td'); 
     for (var j = 0; cols.length; j++) { 
      var col = cols[j]; 
      col.addClass(data[i][j]); 
     } 
    } 
} 

希望を使用することができます!

> console.log(body.rows); 
undefined 

するとあなたはすでにあなたができるjQueryのを使用しているので:それはrows性質を持っていないので...

var calendar = $('#Trafikkalender'); 
var body = calendar.find('tbody'); 

+0

私たちは間違いなく今どこかに行っています。 var col = cols [j];を変更する必要がありました。 〜$(cols [j]);それはうまく動作するようです。しかしねえ...私のデータが2次元配列ではない何らかの理由で、1次元配列に平坦化されたのはなぜですか?私は私のコントローラにあります:string [、] dates = new string [numWeeks、7]; Json(日付)を返します。なぜそれは構造を保持していませんでしたか? – inifus

+0

私はこれについて別の質問をする必要があります。ありがとうございました – inifus

2

あなたは、タグ名渡しfind()メソッドを使用することができます。

+0

私はそれについて考えましたが、タグ名の最初の要素を返すだけで、リストは返さないと考えました。 – inifus

+1

これはtbodyのすべてのtry要素のコレクションを返します。 – Jai

+0

これはうまく動作していたようです:)しかしvar cols = rows [i] .find( 'td');そうではありませんでしたが、クロム氏によると、findは関数ではありません。 – inifus

1

bodyはjQueryオブジェクトではなく、DOM要素でありますjQueryセレクタを使用してすべてのアイテムを一度に取得します。

​​

生D OM要素をjQueryオブジェクトから抽出することができます:

body[0].rows