如何使用javascript循环包含多个td的字符串?

时间:2017-05-21 04:14:32

标签: javascript html

背景故事,我正在开发一个chrome扩展程序,允许用户从用户内容页面检索特定数据并进行一些计算。

我遇到的问题是如何过滤包含多个td元素的字符串,以获取它的内部文本,然后将每个找到的数据存储到数组中。

HTML表格内容&使用Javascript:

<table id="countryList">
     <tr>
         <td>Europe</td>
         <td>France</td>
         <td>Sweden</td>
         <td>Germany</td>
     </tr>
     <tr>
         <td>Asia</td>
         <td>Singapore</td>
         <td>Thailand</td>
         <td>Japan</td>
     </tr>
</table> 

var table = document.getElementById('countryList');
var tdArray = new Array;
for (var r = 0, n = table.rows.length; r < n; r++) 
{
    for (var c = 0, m = table.rows[r].cells.length; c < m; c++) {
        var stringContainTd = table.rows[r].cells[0].innerHTML);
    }
}

//loop through stringContainTd to find each td element and store it's innerText into tdArray.

1 个答案:

答案 0 :(得分:1)

您可以使用querySelectorAll来返回数组中匹配元素的列表。然后使用XRepository遍历此数组并使用forEach获取文本

&#13;
&#13;
textContent
&#13;
var arr = [];
var getTDContent = document.querySelectorAll('td');
getTDContent.forEach(function(item) {
  arr.push(item.textContent); // for pushing into arr
})
&#13;
&#13;
&#13;

或者您也可以使用array.map方法,但<table id="countryList"> <tr> <td>Europe</td> <td>France</td> <td>Sweden</td> <td>Germany</td> </tr> <tr> <td>Asia</td> <td>Singapore</td> <td>Thailand</td> <td>Japan</td> </tr> </table>上的catch不适用于map,但nodelist将有助于使用map方法

&#13;
&#13;
Array.prototype.map.call
&#13;
var arr = [],
  getTDContent = document.querySelectorAll('td');
arr = Array.prototype.map.call(getTDContent, function(item) {
  return item.textContent;
})
console.log(arr)
&#13;
&#13;
&#13;