首页 > 解决方案 > 在文档中查找节点

问题描述

我已经获得了一个节点document.getSelection().anchorNode,我想将其视为一个元素,就好像它是由查询选择器获取的一样。假设我的节点是一个p包含字符串的元素hello world

<p>hello world</p>

该节点出现在 DOM 中:

<!doctype html>
<html>
    <head>
        <link rel="stylesheet" href="/master.css" />
    </head>
    <body>
        <p>hello world</p>
    </body>
</html>

我想<p>从文档中获取元素。但是,一个看起来相同的节点可能会出现多次,我想获取该节点来自的 HTML 元素。

谢谢

标签: javascripthtmldomelement

解决方案


假设我的节点是一个p包含字符串 hello world 的元素

然后anchorNode将是您从中获得的完全相同querySelector的对象。

但是,如果它是该元素p的 Text 节点,则您可能希望使用它anchorNode.parentElement来访问该p元素。

现场示例:

var lastNode = null;
setInterval(function() {
  var selection = window.getSelection();
  var node = (selection && selection.anchorNode) || null;
  if (node === lastNode) {
    return;
  }
  lastNode = node;
  if (!node) {
    console.log("(No selection)");
  } else {
    var result = "Node name is " + node.nodeName;
    if (node.nodeType === 3) { // Text
      console.log(result, "parent element:", node.parentElement);
    } else {
      console.log(result);
    }
  }
}, 250);
Select some text, an analysis of <code>window.getSelection().anchorNode</code>'s result will appear in the console.
<p>hello world</p>


推荐阅读