我是代码的初学者,
我正试图在这张桌子上运行并从每个.winner
类中获取文本并将其推送到数组,所以不要得到:
[ “AA”, “AA”, “DD”]
我得到了
[ “aaaadd”, “aaaadd”, “aaaadd”]
$(document).ready(function(){
var arr = [];
var winner = $('.winner').text() ;
for ( i = 0; i < $('table').length ; i++ ) {
arr.push(winner);
}
console.log(arr);
});
HTML:
<table>
<tr>
<td>#</td>
<td class="winner">aa</td>
<td>bb</td>
<td>cc</td>
<td>dd</td>
</tr>
</table>
<table>
<tr>
<td>#</td>
<td class="winner">aa</td>
<td>bb</td>
<td>cc</td>
<td>dd</td>
</tr>
</table>
<table>
<tr>
<td>#</td>
<td class="winner">dd</td>
<td>cc</td>
<td>bb</td>
<td>aa</td>
</tr>
</table>
我想我的for循环
有问题答案 0 :(得分:1)
var arr = [];
$('table .winner').each(function () {
arr.push($(this).text());
})
或没有课程.winner
$('table').each(function () {
arr.push($(this).find('tr').eq(0).find('td').eq(1).text());
});
$('table .winner')
- 使用课程td's
.winner
$(this).text()
- 从当前元素中获取文字。
在您的示例$('.winner').text()
中返回文字“aaaadd”,然后您获得$('table').length
(将是3)并且三次将相同的文字推送到arr
答案 1 :(得分:0)
句子
var winner = $('.winner')
将为您提供一个对象数组,因此您需要循环每个对象并为每个对象调用text()方法。
答案 2 :(得分:0)
有了这个:
var winner = $('.winner').text();
您将收到标记为td
的所有winner
元素的合并文本(请参阅文档here)。
然后,对于每个table
,将此值推送到数组:
for ( i = 0; i < $('table').length ; i++ ) {
arr.push(winner);
}
这实际上没有必要。 你想要的可能是:
var winners = $('.winner');
for (var i = 0; i < winners.length(); ++i) {
arr.push(winners.eq(i).text());
}