2016-06-28 7 views
1

各行にいくつかのレーティングが含まれている表があります。そのうちの5つは特定のアクションが実行されたときに空白にする必要があり、元のレーティングは別のアクションが撮影。私は元の単語をデータに保存しているので、元のHTML行はこのように見えます。私のJSで要素のループを通し、htmlをデータに置き換えます

echo "<td data-Rating = $Rating class = 'outfieldlineuprating'>$Rating</td>"; 

、私はそうのような 'outfieldlineuprating' を持つすべての要素を見つける。..

SkillRatings = PlayerRow.find('.outfieldlineuprating'); 

それは、この時点までに動作します(PlayerRowで結構です)。私は..

SkillRatings.html('----'); 

これは「outfieldlineuprating」クラスに5つの要素の全てに----置く(すなわち要素をブランキング)最初のアクションを取るとき、それはで動作するので、それは動作します知っています。しかしそれを逆にすると、私は苦労しています。 'SkillRatings'には、おそらく関連するtdの配列が含まれていますが、それをループしてデータを抽出し、htmlに挿入する方法はわかりません。ここで私がしようとしているが、これはJSで動作しません。

for (var index = 0; index < SkillRatings.length; index++){ 
    Rating = SkillRatings[index].attr('data-Rating'); 
    SkillRatings[index].html(Rating); 
} 

これは単にエラーを与える:SkillRatings [インデックス] .ATTRが機能

+1

これはJqueryの質問です。そのタグも追加できますか? –

+1

あなたのコードはjQueryを使うように見えます。もしそうなら:$(SkillRatings [index])。attr'。 –

+0

おっと、それはJQueryです。 Errr、タグを追加しようとします。 – Farflame

答えて

3

あなたはjQueryのを使用していて、SkillRatings = PlayerRow.find('.outfieldlineuprating');は要素を含むjQueryオブジェクトを作成できません。

SkillRatings[index]は実際の要素、その要素のないjQueryオブジェクトを返します

あなたはしかし、これは簡単に現在の要素のようにthisを公開しSkillRatings.each使用して行われ

SkillRatings.eq(index).jQueryMethod(); 
// or 
$(SkillRatings[index]).jQueryMethod(); 

に​​を変更する必要がありますループ

ループの代わりにforループtryを使用します。

SkillRatings.each(function(){ 
    // "this" is current element 
    $(this).html($(this).data('Rating')); 
}); 
+1

OK ...あなたのhtmlに表示される 'data-RatingData'と' data-Rating'の間に問題の不一致があります。 – charlietfl

+0

はい、あなたは正しいです。更新された質問があります。あなたの答えは正しいとループは動作します。ありがとう:) – Farflame

関連する問題