或者我必须做这样的事情:
var nodes = document.childNodes;
for (var i in nodes) {
if (window.getComputedStyle(nodes[i], null).getPropertyValue('someproperty') == 'somevalue')
// do stuff
}
编辑:
我对 XPath 不是很熟悉。对问题的“简单”尝试是这样的:
function test() {
var resultSet = document.evaluate("//*[@float='left']", document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < resultSet.snapshotLength; i++) {
var element = resultSet.snapshotItem(i);
alert(element);
}
}
但不出所料,这是行不通的,因为 float
是一个属性,而不是属性...
最佳答案
正如 Viet & knut 之前所说,您可以继续使用属性选择器和字符串匹配函数:https://www.w3schools.com/xml/xsl_functions.asp#string .
你不应该混淆 XPath 和 Javascript :)
我有提示给你。假设你有一个节点:
<a href="http://google.com" style="padding: 10px; float: left; margin: 10px auto;">Look at me!</a>
使用 fn:substring-after("padding: 10px; float: left;", "float:")
得到 "left; margin: 10px auto;"
.
然后使用 fn:substring-before("left; margin: 10px auto;", ";")
得到 "left"
。
在此之后,使用 fn:normalize-space("left")
得到 "left"
:)
关于javascript - 我可以使用 XPath 按 CSS 属性过滤元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707857/