2016-04-08 23 views
0

メソッドがループ外で動作しているのはなぜですか?私はポジションでも作業していませんし、カラーやテキストの変更もうまくいきません。jQueryのメソッド(.css、.htmlなど)が内部で動作しない

私がやってみたいことは、さまざまなテーブルの位置のテキストを変更することです。繰り返しもうまくいきます。

 $('#tbody_tabla > tr:nth-child(3) > td:nth-child(5)').css("color", "red"); 

     for (var i = 0; i < fechas.length; i++) { 
      for (var j = 0; j < nombres.length; j++) { 
       $('#tbody_tabla > tr:nth-child(3) > th:nth-child(3)').css("color", "red"); 
       $('#tbody_tabla > tr:nth-child(4) > th:nth-child(4)').html("val"); 

       } 
     } 

     $('#tbody_tabla > tr:nth-child(3) > td:nth-child(2)').css("color", "red"); 
     $('#tbody_tabla > tr:nth-child(2) > td:nth-child(2)').html('HOLA'); 

私は前にそのような副問い合わせを見たことがない

<table class="table table-bordered" id="tabla_servicios" style="width:100%; padding:12px"> 
<tbody id="tbody_tabla"> 
    <tr> 
     <th></th> 
     <th>2014-01-01 00:00:00</th> 
     <th>2014-02-13 00:00:00</th> 
     <th>2014-03-01 00:00:00</th> 
     <th>2014-04-01 00:00:00</th> 
    </tr> 
    <tr> 
     <th>Value2</th> 
     <td>2,2</td> 
     <td>2,3</td> 
     <td>2,4</td> 
     <td>2,5</td> 
    </tr> 
    <tr> 
     <th>Value3</th> 
     <td>3,2</td> 
     <td>3,3</td> 
     <td>3,4</td> 
     <td>3,5</td> 
    </tr> 
    <tr> 
     <th>Value4</th> 
     <td>4,2</td> 
     <td>4,3</td> 
     <td>4,4</td> 
     <td>4,5</td> 
    </tr> 
    <tr> 
     <th>Value5</th> 
     <td>5,2</td> 
     <td>5,3</td> 
     <td>5,4</td> 
     <td>5,5</td> 
    </tr> 
    <tr> 
     <th>Value6</th> 
     <td>6,2</td> 
     <td>6,3</td> 
     <td>6,4</td> 
     <td>6,5</td> 
    </tr> 
    <tr> 
     <th>Value7</th> 
     <td>7,2</td> 
     <td>7,3</td> 
     <td>7,4</td> 
     <td>7,5</td> 
    </tr> 
    <tr> 
     <th>Value8</th> 
     <td>8,2</td> 
     <td>8,3</td> 
     <td>8,4</td> 
     <td>8,5</td> 
    </tr> 
</tbody> 
</table> 

Demo fiddle

+1

対応するHTMLを表示して、y私たちのコード。 –

+1

ループ内のコンテンツは静的なので、ループのポイントは何か分かりません。 –

+0

ループの中で同じ要素を何度も何度も繰り返して選択していることは分かりますか?何を正確にしようとしていますか? 'i'と' j'は何に対応していますか? – epascarello

答えて

0

あまりにもHTMLを追加します。

$('#tbody_tabla > tr:nth-child(3) > td:nth-child(5)') 

私は名前のセルが速く、そしてあまりにもデバッグが容易であるとき、その悪い習慣は、セルのコード検索を持っていると思います。なぜあなたはtdタグの名前を付けたり、番号付けしたりしませんか?

$("#tbody_tabla > tr").eq(3).children().eq(5).css("color", "red"); 

上記が機能する場合があります。それができない場合は、サンプルHTMLを提供して、人々があなたを助けるより良い機会を得られるようにしてください。

も参照してください:http://api.jquery.com/find/

EDITED:ジョセフ・marikleではなく

+1

はおそらく元のセレクタに近づくために 'find()'の代わりに['children( 'td')'](http://api.jquery.com/children/)を使うべきでしょう。 –

+0

作業していないと、何がうまくいかなかったのか分かりません。あなたのコードを塊に分割してください - まずあなたのテーブルを取得し、出力が期待どおりであることを確認してから3番目のtrタグを取得し、コンソールに書き出し、正しいことを確認してから5番目のタグを取得し、それをコンソールに送ります。そして、あなたのHTMLコードを共有してください。それ以外の人は、間違った答えであなたの時間を無駄にします。無益を証明するのを手伝って時間を無駄にします。 –

+1

はい、編集は問題です。だから@JosephMarikleは正しく、静的テストのために働いた "子供"を使っていましたが、ループではありません。 –

0

あなたのループの外セレクタが が中に存在しないことをtd子要素を探しているのfind()の()の子どもを使うことを提案@ループ内のマークアップとセレクタが、thの子要素が存在しない場合は、 と表示されます。あなたが提供フィドルで

、あなたはループでこれを持っている:

$('#tbody_tabla > tr:nth-child(3) > th:nth-child(3)').css("color", "red"); 
    $('#tbody_tabla > tr:nth-child(4) > th:nth-child(4)').html("val"); 

しかし、それは次のようになります。

$('#tbody_tabla > tr:nth-child(3) > td:nth-child(3)').css("color", "red"); 
    $('#tbody_tabla > tr:nth-child(4) > td:nth-child(4)').html("val"); 

他の列の「する複数のthの要素がある文句を言わないので行1のほかに。

また、あなたはループを使用していないので、私はあなたのループがフィドルで何をするのかを失うどこでもiables。毎回同じことを繰り返して同じ要素を繰り返すだけです。

+0

はい、私はそれを説明するコメントを追加しました、なぜ同じ静的な位置であってもループ内で動作していないのだろうかと思っていました。静的なポジションで作業した後、私は変数の作業に移った。 –

0

問題は、あなたが直接テーブルから3番目のTRの子として第三番目の要素を探しているコード

ここ
$('#tbody_tabla > tr:nth-child(3) > th:nth-child(3)').css("color", "red"); 
$('#tbody_tabla > tr:nth-child(4) > th:nth-child(4)').html("val"); 

のあなたのこの部分です。

しかし、あなたはそれぞれのtrの中にあなたのコードを見ています。それは1つしかないので、後でtrで3番目または4番目を見つけることはできません。

Problematic part 
    > th:nth-child(3) 
    > th:nth-child(4) 

ソリューション

1)のいずれかの要素数

> td:nth-child(4) 
> td:nth-child(5) 

2)変更に番目にすると、コード

ワーキングフィドルに動作しますすべてのTDをtdのと調整し番目、これを変更します - https://jsfiddle.net/xs4djbrd/5/

関連する問題