2016-06-28 2 views
1

У меня есть таблица, в которой каждая строка содержит несколько оценок, 5 из которых должны быть заглушены при выполнении определенного действия, а затем исходная оценка возвращается обратно, когда другое действие приняты. Я сохранил исходное слово в данных, поэтому моя оригинальная строка в HTML выглядит так.Пройти через массив элементов, заменить 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 [индекс] .attr не является функцией

+1

Это также вопрос Jquery. Можете ли вы добавить этот тег? –

+1

Выглядит ваш код с помощью jQuery, если это так: '$ (SkillRatings [index]). Attr'. –

+0

Ой, да, это JQuery. Errr, я попытаюсь добавить тег. – Farflame

ответ

3

Вы используете JQuery и SkillRatings = PlayerRow.find('.outfieldlineuprating'); создает объект JQuery, содержащий элементы.

SkillRatings[index] возвращает действительный элемент, а не объект JQuery для этого элемента

Вы должны были бы изменить SkillRatings[index].jQueryMethod() к

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

Однако это легче сделать с помощью SkillRatings.each который предоставляет this в качестве текущего элемента петля

Вместо использования for loop try

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

ОК ... есть несоответствие, а затем между 'data-RatingData' и' data-Rating ', указанными в вашем html. – charlietfl

+0

Да, вы правы. Уточните вопрос. Ваш ответ правильный, и цикл работает. Благодаря :) – Farflame

Смежные вопросы