背景故事,我正在开发一个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.
答案 0 :(得分:1)
您可以使用querySelectorAll来返回数组中匹配元素的列表。然后使用XRepository
遍历此数组并使用forEach
获取文本
textContent
&#13;
var arr = [];
var getTDContent = document.querySelectorAll('td');
getTDContent.forEach(function(item) {
arr.push(item.textContent); // for pushing into arr
})
&#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方法
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;