2016-11-15 2 views
0

Ich habe HTML-Struktur folgende -Wählen Geschwister dom Element auf dem Textinhalt eines der Geschwister basiert

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

Jetzt möchte ich alle solche Spanne auszuwählen, die Telefonnummer mit reinen Javascript oder CSS haben Wähler. Ich verwende x-ray. Ich hatte das versucht, aber das scheint nicht zu funktionieren.

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

Antwort

1

können Sie erhalten alle span Elemente und Schleife zum nächsten span nach solchen mit Phone Number zu finden:

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>

Ich bin mir nicht sicher, es ist eine CSS-Selektor-basierte Lösung (:contain ist ein jquery Pseudo Selektor). Aber hier ist ein anderer Ansatz 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

Das ist eine vollkommen gültige Antwort, aber gibt es irgendeine CSS-Selektor-basierte Antwort ohne jquery zu benutzen? – WitVault

1

Wenn Sie fein sind mit jQuery, dann, hier ist die Antwort:

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

oder diese

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

Ich benutze keine jquery. Aber trotzdem danke für die Antwort. – WitVault

+0

Danke für das Hinzeigen. Intern verwendet x-ray cheerio, eine leichte Implementierung von jquery. So funktioniert Jquery Selektoren in meinem Fall! Ich benutzte folgende - ''span: enthält (Telefonnummer :) ~ span'' Wenn Sie Ihre Antwort aktualisieren, dann werde ich es als akzeptiert markieren. – WitVault

+0

Ja, genau. als span ist ein Geschwister. Danke für das Aufzeigen. – Tanima

Verwandte Themen