2017-02-12 4 views
0
<div class="classDiv"> 

<span id="mySpan"> TEXT 1 </span> TEXT 2 

</div> 

document.querySelectorAll Verwendung ("classDiv") [0] .textContentJavascript querySelectorAll und: nicht Selector

Returns = TEXT 1 TEXT 2

Wie i2 nur TEXT bekommen kann?

Ich versuchte mit: nicht (span) ohne Erfolg.

Dank

+0

an diesem einen Blick darauf werfen, es ist jquery aber ich hoffe, Sie erhalten den Punkt werde http://stackoverflow.com/questions/7063408/how-to-get-text-only-from-the-div-when -it-hat-kind-elemente-mit-text-using-jqu –

Antwort

3

Es gibt nichts eingebaute, dass ich bin mir dessen bewusst, aber Sie können eine Funktion in den Textknoten zu extrahieren, die direkte Kinder eines Elements sind:

function getDirectText(node) { 
    var text = ''; 

    for (var i = 0; i < node.childNodes.length; i++) { 
     var child = node.childNodes[i]; 

     if (child.nodeType === 3) { // Node.TEXT_NODE 
      text += child.nodeValue; 
     } 
    } 

    return text; 
} 

und dann:

var text = getText(document.getElementsByClassName('classDiv')[0]); 

Vielleicht möchten Sie auch das Ergebnis von Whitespace trimmen.

+0

Ich wurde abgelenkt, während ich meine eigene Antwort schrieb, ging davon, um zurückzukommen und deine zu finden; Da meine eigene Antwort und deine nur marginal unterschiedlich sind, erscheint es sinnlos, meine eigenen hinzuzufügen. Wenn du das also als eine nützliche Alternative ansiehst, wäre ich sehr glücklich, wenn du es zu deiner Antwort hinzufügen möchtest: https://jsfiddle.net/davidThomas/num9zf3b/:) (obwohl ich entschied, das Array zurückzugeben, anstatt es zusammenzufügen.) –

+0

@DavidThomas: Ich denke, das steht für sich selbst als eine nette ES6-Art; Wenn Sie es hinzufügen würden, würde ich dafür stimmen. =) – Ryan

Verwandte Themen