Voglio sostituire una stringa particolare nel (il testo di) tutti gli elementi discendenti di un dato elemento.Sostituisci tutta l'ocurrance di una stringa in un elemento
innerHTML
non può essere utilizzato poiché questa sequenza può apparire negli attributi. Ho provato ad usare XPath, ma sembra che l'interfaccia sia essenzialmente di sola lettura. Poiché questo è limitato a un elemento, non è possibile utilizzare funzioni come document.getElementsByTagName
.
Qualcuno potrebbe suggerire un modo per farlo? Qualsiasi metodo jQuery o DOM puro è accettabile.
Edit:
Alcune delle risposte stanno suggerendo il problema che stavo cercando di risolvere: la modifica del testo direttamente su un elemento causerà tutti i nodi figli non testuale per essere rimosso.
Quindi il problema dipende essenzialmente da come selezionare in modo efficiente tutti i nodi di testo in un albero. In XPath, puoi farlo facilmente come //text()
, ma l'attuale interfaccia XPath non ti permette di cambiare questi nodi di testo.
Un modo per farlo è con ricorsione come mostrato nello answer di Bergi. Un altro way utilizza il selettore find('*')
di jQuery, ma questo è un po 'più costoso. Sto ancora aspettando di vedere se ci sono soluzioni migliori.
[selettori di jQuery] (http://api.jquery.com/category/selectors/) ti consente di attraversare e modificare dom, accedere ai discendenti e ai fratelli di un elemento. E altro ancora. –
@ADC, sfortunatamente non c'è niente come il selettore textath di XPath .... –