Ich möchte den Inhalt innerhalb eines HTML-Elements ersetzen, daher verwende ich dafür die folgende Funktion:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
Das obige funktioniert gut, aber das Problem ist, dass ich mehr als ein HTML-Element auf einer Seite habe, dessen Inhalt ich ersetzen möchte. Ich kann also keine IDs verwenden, sondern Klassen. Mir wurde gesagt, dass Javascript keine Art von eingebautem get-Element nach Klassenfunktion unterstützt. Wie kann der obige Code überarbeitet werden, damit er mit Klassen anstelle von IDs funktioniert?
PS Ich möchte jQuery dafür nicht verwenden.
quelle
class
als Variablenname funktioniert in Safari nicht und hat derzeit Auswirkungen.elems[i].className
, sagenvar cn
und verwendencn && cn.match(new RegExp("(^|\\s)" + matchClass + "(\\s|$)"))
, besser funktionieren, da es mit jedem Leerzeichen (Leerzeichen, nicht unterbrechendes Leerzeichen, Tabulator usw.) übereinstimmt und gleichzeitig die Übereinstimmung von Namen der ersten und letzten Klasse ermöglicht. Beispiel: jsfiddle.net/AXdtH/1636Natürlich unterstützen jetzt alle modernen Browser den folgenden einfacheren Weg:
Aber seien Sie gewarnt, es funktioniert nicht mit IE8 oder früher. Siehe http://caniuse.com/getelementsbyclassname
Außerdem geben nicht alle Browser ein reines Ergebnis zurück,
NodeList
wie sie es sollen.Sie sind wahrscheinlich immer noch besser dran, wenn Sie Ihre bevorzugte browserübergreifende Bibliothek verwenden.
quelle
querySelectorAll
.Das funktioniert in "modernen" Browsern, die diese Methode implementieren (IE8 +).
Wenn Sie ältere Browser unterstützen möchten, können Sie eine eigenständige Selector-Engine wie Sizzle (4 KB mini + gzip) oder Peppy (10 KB mini) laden und darauf zurückgreifen, wenn die native querySelector-Methode nicht gefunden wird.
Ist es übertrieben, eine Auswahlmaschine zu laden, nur damit Sie Elemente mit einer bestimmten Klasse erhalten können? Wahrscheinlich. Die Skripte sind jedoch nicht allzu groß, und Sie werden die Auswahl-Engine möglicherweise an vielen anderen Stellen in Ihrem Skript nützlich finden.
quelle
document.querySelector
funktioniert in IE8 und höher: caniuse.com/queryselectorEin einfacher und ein einfacher Weg
quelle
Ich bin überrascht, dass es mit regulären Ausdrücken keine Antworten gibt. Dies ist so ziemlich Andrews Antwort ,
RegExp.test
anstattString.indexOf
, da es laut jsPerf-Tests für mehrere Operationen besser zu funktionieren scheint .Es scheint auch auf IE6 unterstützt zu werden .
Wenn Sie häufig nach denselben Klassen suchen, können Sie sie weiter verbessern, indem Sie die (vorkompilierten) regulären Ausdrücke an anderer Stelle speichern und anstelle einer Zeichenfolge direkt an die Funktion übergeben.
quelle
Dies sollte in so ziemlich jedem Browser funktionieren ...
Sie sollten es folgendermaßen verwenden können:
quelle
quelle
Ich gehe davon aus, dass dies keine gültige Option war, als dies ursprünglich gefragt wurde, aber Sie können sie jetzt verwenden
document.getElementsByClassName('');
. Beispielsweise:Weitere Informationen finden Sie in der MDN-Dokumentation .
quelle
Ich denke so etwas wie:
würde funktionieren
quelle
jQuery erledigt dies einfach.
Es ändert alle .myclass-Elemente in diesen Text.
quelle
Wenn einigen Elementen die ID fehlt, verwende ich jQuery wie folgt:
Dies mag eine seltsame Lösung sein, aber vielleicht findet es jemand nützlich.
quelle
myclass
, erhalten alle die IDmyid
, aber die IDs sollten eindeutig sein! Darüber hinaus sagt OP ausdrücklich, jQuery zu vermeiden.