Ich möchte eine bestimmte Zeichenfolge in (der Text von) alle untergeordneten Elemente eines bestimmten Elements ersetzen.Ersetzen Sie alle ourrance einer Zeichenfolge in einem Element
innerHTML
kann nicht verwendet werden, da diese Sequenz in Attributen erscheinen kann. Ich habe versucht, XPath zu verwenden, aber es scheint, dass die Schnittstelle im Wesentlichen schreibgeschützt ist. Da dies auf ein Element beschränkt ist, können Funktionen wie document.getElementsByTagName
ebenfalls nicht verwendet werden.
Kann irgendjemand irgendeinen Weg vorschlagen, dies zu tun? Jede jQuery- oder reine DOM-Methode ist akzeptabel.
Edit:
Einige Antworten sind darauf hindeutet, das Problem, das ich habe versucht, um zu arbeiten: an einem Element den Text direkt ändern verursachen alle Nicht-Text Kind-Knoten entfernt werden.
Das Problem besteht also im Wesentlichen darin, wie alle Textknoten in einem Baum effizient ausgewählt werden können. In XPath können Sie es einfach als //text()
ausführen, aber die aktuelle XPath-Schnittstelle erlaubt es Ihnen nicht, diese Textknoten zu ändern.
Ein Weg, dies zu tun, ist durch Rekursion wie in der answer von Bergi gezeigt. Ein weiterer way ist die Verwendung der find('*')
Selektor von jQuery, aber das ist ein bisschen teurer. Ich warte immer noch darauf, ob es bessere Lösungen gibt.
[jQuery Selektoren] (http://api.jquery.com/category/selectors/) können Sie das dom durchlaufen und ändern, auf die Nachkommen und die Geschwister eines Elements zugreifen. Und vieles mehr. –
@ADC, leider gibt es nichts wie XPath Text() Selektor .... –