2016-11-15 12 views
0

я следующий HTML структура -Выберите элемент родственный дом на основе текстового содержимого одного из собрата

<p> 
    <span class="font-weight-medium"> 
      Phone Number: 
    </span> 
    <br> 
    <span>(123) 456-7869</span> 
</p> 

Теперь я хочу, чтобы выбрать все такие пядь которые имеют номер телефона используя чистый Javascript или CSS селектор. Я использую рентген. Я пробовал это, но это, похоже, не работает.

x(html,'span[contains(text(),"Phone Number")]') 
    (function(err, obj) { 
     console.log(obj); 
    }); 

ответ

1

Вы можете получить все span элементов и петлю, чтобы найти следующий span после тех, которые содержат Phone Number:

span_tags = document.getElementsByTagName('span'); 
 
for (var i=0, max=span_tags.length; i < max; i++) { 
 
    el = span_tags[i]; 
 
    str = el.innerHTML; 
 
    regex =/*Phone Number: */; 
 
    if (str.match(regex)) { 
 
    console.log(span_tags[i+1].innerHTML); 
 
    } 
 
}
<p> 
 
    <span class="font-weight-medium"> 
 
Phone Number: 
 
    </span> 
 
    <span>(123) 456-7869</span> 
 
</p>

Я не уверен, что есть на основе селектора CSS решение (:contain - псевдо-селектор jquery). Но вот еще один подход с использованием indexOf:

span_tags = document.getElementsByTagName('span'); 
 
for (var i=0, max=span_tags.length; i < max; i++) { 
 
    if (span_tags[i].innerHTML.indexOf("Phone Number:") != -1) { 
 
    console.log(span_tags[i+1].innerHTML); 
 
    } 
 
}
<p> 
 
    <span class="font-weight-medium"> 
 
Phone Number: 
 
    </span> 
 
    <span>(123) 456-7869</span> 
 
</p>

+0

Это абсолютно правильный ответ, но есть ли какой-либо css-селекторный ответ без использования jquery? – WitVault

1

Если вы отлично с помощью JQuery, то вот ответ:

$("span:contains(Phone Number:)~span") 

или это

$('span:contains(Phone Number:)').siblings('span') 
+0

Я не использую jquery. Но в любом случае спасибо за ответ. – WitVault

+0

Спасибо за указание. Внутренний рентгеновский снимок использует cheerio, который представляет собой легкую реализацию jquery. Поэтому jquery selectors работает в моем случае! Я использовал следующее - '' span: содержит (Номер телефона :) ~ span'' Если вы обновите свой ответ, я помечаю его принятым. – WitVault

+0

Да, точно. поскольку промежуток является родным братом. Спасибо за указание. – Tanima