为每个表推送到数组

时间:2015-03-12 15:33:53

标签: javascript arrays for-loop

我是代码的初学者, 我正试图在这张桌子上运行并从每个.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循环

有问题

3 个答案:

答案 0 :(得分:1)

var arr = [];

$('table .winner').each(function () {
   arr.push($(this).text());  
})

Example

或没有课程.winner

的版本
$('table').each(function () {
   arr.push($(this).find('tr').eq(0).find('td').eq(1).text());
}); 

Example

$('table .winner') - 使用课程td's

返回3 .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());
}