使用querySelectorAll,在某些情况下如何捕获属性,而在其他情况下如何捕获整个元素?

时间:2018-10-28 02:15:27

标签: node.js css-selectors innertext

使用节点并具有类似内容:

const carsforsale = Array.from(document.querySelectorAll(div > p, div > a, div> div > h1))
return carsforsale.map(elem => elem.innerText)

假设我想从<p><h1>捕获innerText,而不是从<a>捕获,因为我只想从<a>捕获href属性,而innerText将是使用map函数时也返回,用不必要的信息填充数组。

在查询选择器函数上是否有简便的方法?

或者甚至是在map函数上执行此操作的简单方法?

1 个答案:

答案 0 :(得分:2)

请注意,Array.from接受第二个参数,这是一个映射器函数-每当您有一个Array.from后跟一个.map时,您都可以将其压缩为一个{{1} }。

在mapper函数中,您只需要检查要迭代的元素的Array.from

tagName

还要注意,当您使用字符串时,需要将它们括在定界符中,例如return Array.from( document.querySelectorAll('div > p, div > a, div> div > h1'), elem => ( elem.tagName === 'A' ? elem.href : elem.innerText ) ); '"。 (`将产生document.querySelectorAll(div > p, div > a, div> div > h1)

一个旁注,您可能想用SyntaxError而不是textContent。在大多数情况下,innerTextinnerText的{​​{3}}版本。