Javascript - 从页面中提取文本,然后使用它构建一个数组

时间:2010-10-01 19:29:21

标签: javascript jquery arrays

我有一个数据表,我想从中获取文本,插入数组(然后与Google地图一起使用)。

表格如下:

<table>
  <thead>
    <tr>
      <th>One</th>
      <th>Two</th>
    </tr>
  </thead>
  <tr class='bar'>
    <td class='name'>Bob</td>
    <td class='number'>12345</td>
  </tr>
  <tr class='bar'>
    <td class='name'>Jane</td>
    <td class='number'>-55.34</td>
  </tr>
</table>

我想从表格单元格中获取文本并构建一个数组。类似的东西:

var foo = [
['Bob', 12345],
['Jane', -55.34]
]

我尝试使用jquery,是:

 var foo = [];
    $('.bar').each(function(){
        foo.push($('.name').text(), $('.number').text());
    });

但是,显然,这不起作用(我很确定我只是以错误的方式使用选择器):

["BobJane", 12345-55.34]

那么如何从每个TR中的每个TD获取内容并使用它构建数组,以便获得上面所需的示例(每个数据集都在其自己的行中)?

3 个答案:

答案 0 :(得分:3)

你可以using .map()来构造值的jQuery对象and .get()以将数组拉出来。

试试这个:

var array = $('.bar').map(function() {
    var $ch = $(this).children('td');
    return [ [ $.text( [$ch[0]] ), $.text( [$ch[1]] ) ] ];
}).get();

请注意,在.map()内返回数组时,需要将其包装在另一个数组中。

答案 1 :(得分:2)

你快到了:

var foo = [];
$('.bar').each(function(){
    var self = $(this);

    foo.push([self.children('.name').text(), self.children('.number').text()]);
});

您之前已将两个新值推送到foo数组。上面的代码推送一个值(这是一个包含两个元素的数组)。您还需要在当前表格行中搜索正确的namenumber,您可以使用children进行搜索。

如果它有助于您理解,上述代码可以分解为:

var foo = [];
$('.bar').each(function(){
    var self = $(this);

    var row = [self.children('.name').text(), self.children('.number').text()];

    foo.push(row);
});

答案 2 :(得分:1)

this作为上下文传递给each内的选择器,以便一次只获得一个名称/号码。另外,请确保将数组[]传递给push函数,而不是两个条目。

var foo = [];
$('.bar').each(function () {
    var name   = $('.name'  , this).text(); // name from the current .bar
    var number = $('.number', this).text(); // number from the current .bar
    foo.push( [ name, number ] ); // notice []
});