删除在 Javascript 中使用 Xpath 找到的元素
Remove Element Found with Xpath in Javascript
我正在构建一个 Chrome 扩展。试图删除包含特定文本的 HTML 元素。使用 Xpath 找到了元素。但是元素没有移除,也没有报错。
<div>
<div>Some Text</div>
</div>
let element = document.evaluate("/*[text() = 'Some Text']", document, null, XPathResult.ANY_TYPE, null)
element.remove();
这会运行,但不会删除该元素。
document.evaluate
不是 return 一个 DOM 节点。它 return 是 XPathResult
。请参阅文档 here.
有关如何将 JQuery 与 XPath 结合使用的指南,另请参阅 this Whosebug question。
改变
let element = document.evaluate("/*[text() = 'Some Text']", document, null, XPathResult.ANY_TYPE, null)
至
let element = document.evaluate("//*[text() = 'Some Text']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
element.singleNodeValue.remove()
看看它是否有效。
我正在构建一个 Chrome 扩展。试图删除包含特定文本的 HTML 元素。使用 Xpath 找到了元素。但是元素没有移除,也没有报错。
<div>
<div>Some Text</div>
</div>
let element = document.evaluate("/*[text() = 'Some Text']", document, null, XPathResult.ANY_TYPE, null)
element.remove();
这会运行,但不会删除该元素。
document.evaluate
不是 return 一个 DOM 节点。它 return 是 XPathResult
。请参阅文档 here.
有关如何将 JQuery 与 XPath 结合使用的指南,另请参阅 this Whosebug question。
改变
let element = document.evaluate("/*[text() = 'Some Text']", document, null, XPathResult.ANY_TYPE, null)
至
let element = document.evaluate("//*[text() = 'Some Text']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
element.singleNodeValue.remove()
看看它是否有效。