对于每个 table 推送到数组
for each table push to array
我是代码初学者,
我正在尝试 运行 对此 table 并从每个 .winner
class 获取文本并将其推送到数组,
所以不是得到:
["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 循环有问题
var arr = [];
$('table .winner').each(function () {
arr.push($(this).text());
})
或没有class的版本.winner
$('table').each(function () {
arr.push($(this).find('tr').eq(0).find('td').eq(1).text());
});
$('table .winner')
- returns 3 td's
与 class .winner
$(this).text()
- 从当前元素获取文本。
在你的例子中 $('.winner').text()
returns 文本 "aaaadd",然后你得到 $('table').length
(将是 3)并且三次将相同的文本推送到 arr
句子
var winner = $('.winner')
会给你一个对象数组,所以你需要循环每个对象并为每个对象调用 text() 方法。
有了这个:
var winner = $('.winner').text();
您将从标记为 winner
的所有 td
元素中获取组合文本(请参阅文档 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());
}
我是代码初学者,
我正在尝试 运行 对此 table 并从每个 .winner
class 获取文本并将其推送到数组,
所以不是得到:
["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 循环有问题
var arr = [];
$('table .winner').each(function () {
arr.push($(this).text());
})
或没有class的版本.winner
$('table').each(function () {
arr.push($(this).find('tr').eq(0).find('td').eq(1).text());
});
$('table .winner')
- returns 3 td's
与 class .winner
$(this).text()
- 从当前元素获取文本。
在你的例子中 $('.winner').text()
returns 文本 "aaaadd",然后你得到 $('table').length
(将是 3)并且三次将相同的文本推送到 arr
句子
var winner = $('.winner')
会给你一个对象数组,所以你需要循环每个对象并为每个对象调用 text() 方法。
有了这个:
var winner = $('.winner').text();
您将从标记为 winner
的所有 td
元素中获取组合文本(请参阅文档 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());
}