为什么在第一个数组索引中抛出所有表元素?

时间:2018-01-10 14:51:03

标签: javascript arrays indexing html-table

我使用Cheer.io从表中抓取日期。页面设置如下:

 <tr>
      <td>*other values*</td>
      <td>16-12-2017</td>
      <td>*other values*</td>
    </tr>
  <tr>
      <td>*other values*</td>
      <td>14-12-2017</td>
      <td>*other values*</td>
    </tr>
  <tr>
      <td>*other values*</td>
      <td>12-12-2017</td>
      <td>*other values*</td>
    </tr>
  <tr>
      <td>*other values*</td>
      <td>12-12-2017</td>
      <td>*other values*</td>
    </tr>

每当我执行此代码时:

let date= $('tr td:nth-child(2)').text();
jsonarr.push(date)
console.log(jsonarr);

所有日期都只是在一个数组索引中抛出。我怎样才能在自己的索引中获得每个日期?

提前致谢

4 个答案:

答案 0 :(得分:2)

根据text文档

  

在匹配的集合中获取每个元素的组合文本内容   元素,包括它们的后代,或者设置文本内容   匹配的元素。

您需要使用mapget

var date= $('tr td:nth-child(2)').map( function(){ 
   return $(this).text() 
}).get();
console.log(date);

<强>演示

var date= $('tr td:nth-child(2)').map( function(){ return $(this).text() }).get();
console.log(date);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>*other values*</td>
    <td>16-12-2017</td>
    <td>*other values*</td>
  </tr>
  <tr>
    <td>*other values*</td>
    <td>14-12-2017</td>
    <td>*other values*</td>
  </tr>
  <tr>
    <td>*other values*</td>
    <td>12-12-2017</td>
    <td>*other values*</td>
  </tr>
  <tr>
    <td>*other values*</td>
    <td>12-12-2017</td>
    <td>*other values*</td>
  </tr>
</table>

答案 1 :(得分:1)

不要使用.text(),它会创建匹配元素的文本内容的单个连接字符串。

而是使用.map().toArray()创建一个数组。

let date= $('tr td:nth-child(2)').map((i, el) => el.textContent).toArray();
console.log(date);

当然,你不需要jQuery来做这件事。

let date= Array.from(
   document.querySelectorAll('tr td:nth-child(2)'), el=>el.textContent
);
console.log(date);

答案 2 :(得分:1)

let dates = [];
$('tr td:nth-child(2)').each(function(){ dates.push($(this).text()); });

答案 3 :(得分:0)

尝试以下方式:

&#13;
&#13;
let jsonarr =[];
let date= $('table tr td:nth-child(2)').each(function(i, el){ 
  jsonarr.push($(el).text())
})
console.log(jsonarr);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
  <tr>
    <td>*other values*</td>
    <td>16-12-2017</td>
    <td>*other values*</td>
  </tr>
  <tr>
    <td>*other values*</td>
    <td>14-12-2017</td>
    <td>*other values*</td>
  </tr>
  <tr>
    <td>*other values*</td>
    <td>12-12-2017</td>
    <td>*other values*</td>
  </tr>
  <tr>
    <td>*other values*</td>
    <td>12-12-2017</td>
    <td>*other values*</td>
  </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;