#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;