Javascript querySelectorAll()打印所有节点的文本内容
这是我用来从网页获取所有文本内容的代码。但它不起作用,我不知道我做错了什么Javascript querySelectorAll()打印所有节点的文本内容,javascript,html,css-selectors,phantomjs,Javascript,Html,Css Selectors,Phantomjs,这是我用来从网页获取所有文本内容的代码。但它不起作用,我不知道我做错了什么 <tr style="color:#000000" class="odd"> <td style="padding:5px 5px 5px 10px" align="center"><input type="checkbox" name="cards[]" id="card_278002" value="278002"></td> <td align="cen
<tr style="color:#000000" class="odd">
<td style="padding:5px 5px 5px 10px" align="center"><input type="checkbox" name="cards[]" id="card_278002" value="278002"></td>
<td align="center">411756</td>
<td align="center">Sherrie</td>
<td align="center">89852</td>
</tr>
输出:
null
。。我做错了什么?你不能像那样使用文档。queryselect或all
。它返回一个节点列表
。您必须自己从每个节点获取textContent
更长的路:
function get42() {
var tds = document.querySelectorAll('td'),
result = [];
for (var i = 0; i < tds.length; i++) {
result.push(tds[i].textContent);
}
return result;
}
非常感谢您!然而,这张地图让我的大脑很难理解。“你必须自己从每个节点获取文本内容”-或者只需获取父元素的
textContent
。(当然,你可能需要去除/规范化空白。)@victory没问题。这个map
示例有点复杂,因为它借用了Array
中的map函数(因为NodeList
没有map函数)。用长一点的方法没什么错。为了更容易理解<代码> MAP>代码>示例,考虑一个数组(它有内置的映射):<代码> [1,2,3] .map(函数(num){返回num * 2 });返回[2,4,6]
…基本上是将函数映射到数组的每个元素。这个例子就是把这个值乘以2。希望有帮助!
function get42() {
var tds = document.querySelectorAll('td'),
result = [];
for (var i = 0; i < tds.length; i++) {
result.push(tds[i].textContent);
}
return result;
}
function get42() {
var tds = document.querySelectorAll('td');
return Array.prototype.map.call(tds, function(t) { return t.textContent; });
}