2017-01-11 13 views
0

Für ein div, die mehrfach in Ihren HTML angezeigt:Wie mehrere Vorkommen von innerHTML eines div mit Javascript ersetzen?

<div class="myclass">abc</div> 
<div class="myclass">abc def</div> 
... 

Wie kann ich erreichen, den Ersatz von „abc“ für alle Vorkommen? (I Ressourcen fand das erste Vorkommen zu ersetzen, aber nicht den Rest)

Dies ist mein Code mit JavaScript-Methode

<script> 
function addLoadEvent(func) { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') { 
    window.onload = func; 
    } else { 
    window.onload = function() { 
     if (oldonload) { 
     oldonload(); 
     } 
     func(); 
    } 
    } 
} 

addLoadEvent(function() { 

    oldText = document.getElementsByClassName("myclass").innerHTML; 
    for (i = 0; i<oldText.length; i++){ 
    newText = oldText[i].innerHTML; 
    newText = newText.replace(/abc/g, "123"); 
    oldText[i].innerHTML = newText; 

    }); 
</script> 
+2

Es gibt buchstäblich keine jquery in diesem Beispiel? Es ist Vanille Javascript, aber Ihr Laden jQuery ohne Grund! Was genau ist die Frage hier, funktioniert das nicht? – Liam

+0

Ja, es funktioniert nicht, ich versuche eine gute Methode zu finden, um den inneren Text im div zu ersetzen, der mehrmals vorkommt. Vielleicht verwechselte ich mich zwischen jquery und JS ... – KillM

+1

Dein Code funktioniert, nur '.innerHTML' aus' document.getElementsByClassName ("myclass") ' –

Antwort

0

Ziel jeder Klasse, Split Wert, entfernen 0-Index und verketten.

$('.myclass').each(function(){ 
     var data = $(this).val(); 
     var data_array = data.split(); 
     var new = ''; 
     for(var i=1; i<data_array.length; i++){ 
      var _new += ' '+data_array[i]; 
     } 
     $(this).val(_new); 
    }); 
+0

Ich glaube nicht, dass das OP jquery will. Er weiß nicht, was es ist – Liam

+2

'new' ist ein Schlüsselwort und kann nicht als Variablenname verwendet werden. –

3

Hier Lösung:

Das Problem bei dieser Linie ist: oldText = document.getElementsByClassName("myclass").innerHTML;

.innerHTML Methode gibt HTML Inhalt.

Sie müssen nur Elemente nach Klassennamen erhalten und eine nodeList erhalten.

oldText = document.getElementsByClassName("myclass"); 

function addLoadEvent(func) { 
 
    var oldonload = window.onload; 
 
    if (typeof window.onload != 'function') { 
 
    window.onload = func; 
 
    } else { 
 
    window.onload = function() { 
 
     if (oldonload) { 
 
     oldonload(); 
 
     } 
 
     func(); 
 
    } 
 
    } 
 
} 
 
addLoadEvent(function() { 
 
    oldText = document.getElementsByClassName("myclass"); 
 
    for (i = 0; i<oldText.length; i++){ 
 
     newText = oldText[i].innerHTML; 
 
     newText = newText.replace(/abc/g, "123"); 
 
     oldText[i].innerHTML = newText; 
 
    } 
 
});
<div class="myclass">abc</div> 
 
<div class="myclass">abc def</div>

Verwandte Themen