Ändern Sie den Text eines Div mit Javascript
-
div-Text mit deminnerHTML-Attribut ändern -
Ändern Sie den Inhalt eines Divs mit dem Node-Attribut
textContent -
Innerer HTML-Versus Sicherheitsaspekt
textcontent -
Ändern Sie den
div-Text mit dem:afterPseudo-Element
Die div-Elemente sind von Natur aus nicht interaktiv. Javascript haucht ihm Leben ein, indem es interaktiv gemacht wird. Möglicherweise müssen wir den von einem div angezeigten Text umformulieren. Beispielsweise können wir bei der Implementierung einer Bearbeitungsfunktion die Bildschirme wiederverwenden, die für die Entwicklung der Hinzufügen-Funktion entwickelt wurden. Nur die Formulierungen müssen geändert werden. Was die Hinzufügen-Funktion betrifft, müssen wir möglicherweise das Schlüsselwort Hinzufügen einer Schaltfläche in Aktualisieren umformulieren und so weiter. Sehen wir uns einige Möglichkeiten an, wie wir den Text eines div dynamisch ändern können.
div-Text mit dem innerHTML-Attribut ändern
Im Gegensatz zu anderen Programmiersprachen verwenden wir keine Getter- und Setter-Methoden, um einen Text auf HTML-Elemente zu setzen. Das HTML-Elementobjekt für ein div hat ein Attribut namens innerHTML. Wir können es verwenden, um den Inhalt des HTML-Objekts abzurufen und festzulegen. Hier wird das HTML-Objekt live sein. Das heißt, es spiegelt jede Änderung der Elementeigenschaft im Browser bei der Aktualisierung wider.
Es folgt die Syntax für die Verwendung von innerHTML.
var text = htmlElement.innerHTML;
htmlElement.innerHTML = 'New Text';
Im obigen Code-Schnipsel erhalten wir den Inhalt eines HTML-div-Elements mit dem htmlElement.innerHTML. Dabei ist das htmlElement das eigentliche HTML-Objekt. Auf ähnliche Weise können wir den Inhalt auf ein div setzen, indem wir dasselbe Attribut verwenden, das innerHTML des Elements. Wir weisen lediglich den Textinhalt dem innerHTML zu.
- Verwendungszweck:
<div id="div-element">Hey there!!</div>
window.onload = function() {
document.getElementById('div-element').innerHTML = 'Hello World!!';
console.log(document.getElementById('div-element').innerHTML);
var el = document.getElementById('div-element');
el.textContent = 'Hello bunny!!';
console.log(document.getElementById('div-element').innerHTML);
}
Ausgabe:
Hello World!!
Hello bunny!!
Bevor wir .innerHTML anwenden, müssen wir das HTML-Element auswählen. Wir können es auf verschiedene Weise tun. Javascript hat viele Funktionen, mit denen wir Elemente aus dem DOM abfragen können. Im Folgenden sind einige der am häufigsten verwendeten Methoden aufgeführt.
getElementById(): Diese Funktion der Schnittstelledocumentdient dazu, ein Element aus demDOManhand seiner im HTML angegebenenidauszuwählen. Die Funktion gibt das dem ausgewählten Element entsprechende HTML-Objekt zurück.getElementsByClassName: Mit der FunktiongetElementsByClassNamekönnen wir Elemente basierend auf demcss-Klassennamenabfragen. Von dieser Javascript-Methode werden mehrere Elemente als Array von HTML-Objekten zurückgegeben.getElementsByName: Es gibt eine andere Möglichkeit, die Elemente mit dem Attributnameauszuwählen. Wir geben das name-Attribut für den Knoten in HTML an. Diese Methode gibt ein Array vonHTML-Objekten zurück. Wir können es verwenden, insbesondere wenn wir daran interessiert sind, mehrere Elemente mit einem bestimmten Stil, einer bestimmten CSS-Klasse, auszuwählen und auf sie alle auf einmal zu reagieren.getElementsByTagName: Wir können Elemente auch basierend auf ihren HTML-Tags mit der FunktiongetElementsByTagName()auswählen. Zum Beispiel können wir einige Operationen an allendiv-Elementen in einem Abschnitt vonDOMusw. ausführen. Wie der Name schon sagt, gibt die Funktion ein Array vonHTML-Objekten zurück.querySelector: Javascript-FunktionquerySelectorist etwas allgemeiner und kann verwendet werden, umHTML-Elemente mit dercss-Abfrageauszuwählen. Die Funktion gibt das erste Element zurück, das die in ihrem Parameter übergebene Bedingung erfüllt.querySelectorAll: Dieser ist demquerySelectorähnlich, mit dem einzigen Unterschied, dass er mehr als ein Element zurückgibt, das dem als Parameter übergebenencss query-Format entspricht.
Ändern Sie den Inhalt eines Divs mit dem Node-Attribut textContent
Auch wenn wir das innerHTML recht häufig verwenden, birgt seine Verwendung ein Sicherheitsrisiko. Es hängt damit zusammen, wie das innerHTML den Inhalt des HTML-Elements ersetzt. Das Attribut innerHTML entfernt alle Sub-HTML-Knoten auf einmal und fügt den neuen Inhalt wie darin zugewiesen hinzu.
Das Sicherheitsrisiko besteht darin, dass das Attribut innerHTML es uns ermöglicht, jeden beliebigen HTML-Code einzufügen, auch wenn es sich um einen schädlichen Code handelt. Auf diesen Aspekt werden wir im nächsten Abschnitt eingehen. MDN empfiehlt die Verwendung von node.textContent, um den Text eines Elements zu ändern. Es ersetzt die untergeordneten Knoten im HTML-Code durch den text, den wir im Parameter textContent zuweisen. Lesen Sie den folgenden Code, um die Verwendung zu verstehen.
<div id="div-element">Hey there!!</div>
window.onload = function() {
var el = document.getElementById('div-element');
el.textContent = 'Hello bunny!!'
}
Ausgabe:
Hello bunny!!
Hier wählen wir das HTML-Element div aus, bevor wir den Text ändern. Wir verwenden die Funktion getElementById(), um das Element aus dem DOM abzufragen. Wir verwenden dann den textContent, um den Text des div zu ändern. Diese Änderung wird beim Laden des Bildschirms nicht erkannt. Sobald der Browser die Webseite lädt, wird die Funktion window.onload ausgeführt und die Textänderung erfolgt. So sieht der Endbenutzer immer den neueren Text. Die Änderung des alten Textes in den neuen ist beim Laden des Bildschirms nicht ersichtlich. Wir können auch mit dem textContent in der Methode setTimeOut herumspielen, um die Änderung zu sehen.
Innerer HTML-Versus Sicherheitsaspekt textcontent
Das Attribut innerHTML unterscheidet sich vom textContent. Beide Attribute verwenden text als Eingabe, aber was ist hier die Sicherheitslücke? Im innerHTML ist es möglich, Schadcode einzufügen. Weitere Informationen finden Sie im folgenden Code-Snippet. Hier spiegelt sich die Änderung wider und der innerHTML-Code wird ausgeführt. Wie der folgende Code-Schnipsel zeigt, erscheint beim Anklicken des hellgrünen HTML-Elements div ein unerwünschter Alarm auf dem Bildschirm.
<div id="div-element"></div>
window.onload = function() {
var el = document.getElementById('div-element');
el.innerHTML =
`<div style="height: 20px; background: lightgreen" onclick="alert('Danger!!!')">`;
}
Wenn wir dem Element div den gleichen Inhalt in textContent zuweisen, wird es nicht als HTML-Element gerendert. Javascript rendert den Inhalt als Text auf dem Bildschirm. So können wir das <div style="height: 20px; background: lightgreen" onclick="alert('Danger!!!')"> buchstäblich als Text auf der Webseite sehen. Dieser Aspekt macht Code sicherer und zuverlässiger. Wenn wir also beabsichtigen, den Text eines HTML-Elements zu ändern, empfehlen die Javascript-Best Practices (wie von MDN unterstützt) die Verwendung von textContent anstelle des innerHTML-Attributs.
<div id="div-element"></div>
window.onload = function() {
var el = document.getElementById('div-element');
el.textContent =
`<div style="height: 20px; background: lightgreen" onclick="alert('Danger!!!')">`;
}
Ändern Sie den div-Text mit dem :after Pseudo-Element
Wenn die Textänderung trivial ist, können wir CSS verwenden, um den div-Text zu ändern. Wir verwenden das Pseudo-HTML-Element :after, wobei wir den anzuzeigenden Text im Attribut content hinzufügen. Sie gilt nicht für HTML-Elemente wie <img>, bei denen der Browser den Inhalt durch das geladene Bild ersetzt. Der folgende Code beschreibt die Verwendung.
<div class="pvw-title"><span>Facts</span></div>
.pvw-title span {
display: none;
}
.pvw-title:after {
content: 'whatever it is you want to add';
}