循环遍历元素数组,用数据

时间:2016-06-28 16:08:27

标签: javascript jquery html

我有一个表格,其中每行包含几个评级,其中5个在采取某个操作时需要消隐,然后在采取另一个操作时将原始评级放回。我已将原始单词存储在数据中,因此我在HTML中的原始行看起来像这样。

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

在我的JS中,我发现所有带有'outfieldlineuprating'的元素都是这样的..

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

到目前为止(PlayerRow很好)。我知道它有效,因为在采取第一个动作(即消隐元素)时,它适用于..

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

这将----在所有5个元素中加上'outfieldlineuprating'类。然而,扭转它,我正在努力。此时'SkillRatings'可能包含某些相关td的数组,但我不知道如何遍历它,提取数据并将其插入到html中。这是我正在尝试但这在JS中不起作用。

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

这只是错误:SkillRatings [index] .attr不是函数

1 个答案:

答案 0 :(得分:3)

您正在使用jQuery,SkillRatings = PlayerRow.find('.outfieldlineuprating');创建一个包含这些元素的jQuery对象。

SkillRatings[index]返回一个实际元素,而不是该元素的jQuery对象

您需要将SkillRatings[index].jQueryMethod()更改为

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

然而,使用SkillRatings.eachthis作为循环中的当前元素公开

更容易

而不是使用for循环尝试

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