Найти узел в документе - PullRequest
0 голосов
/ 16 декабря 2018

Я получил узел через 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, из которого получен этот узел.

Спасибо

1 Ответ

0 голосов
/ 16 декабря 2018

Скажем, мой узел - это p элемент, содержащий строку hello world

Тогда anchorNode будет точно тем же объектом, который вы получите отquerySelector.

Но если это текстовый узел внутри этого p элемента, вы можете использовать anchorNode.parentElement для доступа к элементу p.

Live Пример:

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>
...