javascript - 我可以使用 XPath 按 CSS 属性过滤元素吗?

标签 javascript css xpath

或者我必须做这样的事情:

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/

相关文章:

CSS 导致 Visual Studio 2015 预览版崩溃

html - 不在 &lt;style&gt; 标记中声明 "type"属性是否会产生性能成本?

java - XML 命名空间在 XPath + java 中解析文件时出现问题

html - 如何在带有 xpath 的名为 nav-submit-button 的网页中找到一个元素 div?

Javascript - 在字符串中添加缺少的括号

javascript - Angular 注销不会清除本地存储

javascript - 默认情况下无法将整个 div 内容设置为只读,并且在单击编辑按钮时无法启用编辑

javascript - 如何根据区域坐标显示一个div

python - Selenium 无法通过 Xpath 查找元素?

javascript - 检查 angularjs 中未保存的表单数据(使用 ui-router 的多个表单)