DOM находит элемент по Xpath

#javascript #dom

#javascript #dom

Вопрос:

Я новичок в DOM-запросах, и мне интересно, можно ли запрашивать элементы DOM напрямую с помощью Xpath аналогично приведенному ниже коду?

 document.getElementById("searchInput");
  

Спасибо!

Комментарии:

1. Да, XPath может это сделать. //*[@id='searchInput']

2. Спасибо, так что я бы просто передал Xpath в качестве параметра методу getElementById?

3. @user3648426 нет. это эквивалентный xpath.

4. нет. gEBI не имеет ничего общего с xpath. xpath — это инструмент для запросов к дереву dom общего назначения. gEBI — это очень специфический поиск, который может использовать xpath внутри, но, вероятно, не для повышения эффективности.

5. Спасибо, ребята, цените это!

Ответ №1:

Эквивалентный оператор, использующий только XPath, будет

 xPathResult = document.evaluate('//*[@id="searchInput"]', document);
if(xPathResult){
     element = xPathResult.iterateNext();
}
  

Взгляните на вводную часть XPath в браузере MDN для получения дополнительных примеров и способов использования.

Комментарии:

1. в отличие $x('...') от этого работает

Ответ №2:

Если вы ищете один или первый элемент за вашим XPath, вы можете использовать этот один вкладыш:

 const yourstring = "/html/body/div[1]/div[1]/div/div[3]/div[1]/h3";
const element = document.evaluate(yourstring, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;