2015-08-02 1 views
0

Я не могу изменить ни одного html на соответствующем веб-сайте.Поиск селектора для дочерних элементов в dom scrape

Вот некоторые HTML:

<ul id="utility-menu" class="menu menu--primary"> 

     <li><a class="" href="https://www.example.com/newsstand" target="_blank">Magazines</a></li> 

     <li><a class="" href="https://secure.bla.com/example/promo/GiveAGift/" target="_blank">Gifts</a></li> 

     <li> 

      <a href="/email_check?lang=fr">Français</a> 
     </li> 

      <li><a class="" href="/signin">Sign In</a></li> 

     <li> 
      <div class="i-am-canadian"> 
      <img alt="Canadian flag" height="23px;" src="https://secure.example.com/assets/images/icons/ui/i-canadian-c8a132ad64588dcc0b2e61cc589dfef3.png" width="40px;"> 
      </div> 
     </li> 
     </ul> 

мне удалось выбрать меню с помощью:

document.querySelectorAll('.menu--primary')[0] 

Элемент Я заинтересован в это:

<a href="/email_check?lang=fr">Français</a> 

Этот элемент И.А. выбор языка для посетителя сайта, который будет либо «английский», либо «французский».

Если пользователь находится на странице на английском языке, значение элемента будет отображаться. Но если они находятся на эквиваленте на французском языке, элемент будет <a href="/email_check?lang=en">English</a>

Мне нужен селектор, который возвращает либо «английский», либо «Français».

Как бы я это сделал?

ответ

2

Ответ:

var el = document.querySelector('#utility-menu a[href^="/email_check?lang="').textContent; 

Он будет выбрать первый a элемент с атрибутом href начинающегося с /email_check?lang= в #utility-menu. Возможно, вы можете сделать .trim() текст, чтобы избавиться от пробелов.

+0

Это замечательно, спасибо большое. Что такое шляпка, которая идет рядом с значком равенства? –

+2

@DougFirr соответствует атрибуту, значение которого начинается с данного префикса http://stackoverflow.com/questions/16791527/can-i-use-a-regular-expression-in-queryselectorall – Amitd

1

Если ваш HTML не собирается менять много, вы можете использовать

var test = document.querySelector("ul > li > a[href='/email_check?lang=fr']"); 

console.log(test.textContent); // Français 

https://jsfiddle.net/u4vjq8ah/

+0

'.innerText' не соответствует стандарту , вместо этого вы должны использовать 'textContent'. – Ginden

+0

@Ginden thx исправил его сейчас – Amitd