Aktualisieren
Nachdem wir einen DOM-Knoten erhalten haben, können wir ihn aktualisieren.
Sie können den Text des Knotens direkt ändern. Es gibt zwei Methoden:
Eine besteht darin, das innerHTML Attribut, diese Methode ist sehr leistungsfähig. Sie können nicht nur den Textinhalt eines DOM-Knotens ändern, sondern auch den Teilbaum innerhalb des DOM-Knotens über HTML-Fragmente ändern:
// 获取<p id="p-id">...</p> var p = document.getElementById('p-id'); // 设置文本为abc: p.innerHTML = 'ABC'; // <p id="p-id">ABC</p> // 设置HTML: p.innerHTML = 'ABC <span style="color:red">RED</span> XYZ'; // <p>...</p>的内部结构已修改
innerHTML, achten Sie bitte darauf, ob Sie HTML schreiben müssen. Wenn die geschriebene Zeichenfolge über das Netzwerk abgerufen wird, achten Sie auf die Zeichenkodierung, um XSS-Angriffe zu vermeiden. Die zweite besteht darin, die Attribute
innerText oder textContent zu ändern, sodass die Zeichenfolge automatisch HTML-codiert werden kann und nicht Beliebiges HTML-Tag:
// 获取<p id="p-id">...</p> var p = document.getElementById('p-id'); // 设置文本: p.innerText = '<script>alert("Hi")</script>'; // HTML被自动编码,无法设置一个<script>节点: // <p id="p-id"><script>alert("Hi")</script></p>
innerText wird nicht zurückgegeben. Versteckt den Text des Elements, während textContent den gesamten Text zurückgibt. Beachten Sie außerdem, dass IE<9 textContent nicht unterstützt. Das Ändern von CSS ist ebenfalls ein häufig erforderlicher Vorgang. Das Attribut
style des DOM-Knotens entspricht allen CSS und kann direkt abgerufen oder festgelegt werden. Da CSS Namen wie font-size zulässt, es sich jedoch nicht um einen gültigen Eigenschaftsnamen in JavaScript handelt, muss er in JavaScript als Camel-Case-Namensgebung fontSize umgeschrieben werden :
// 获取<p id="p-id">...</p> var p = document.getElementById('p-id'); // 设置CSS: p.style.color = '#ff0000'; p.style.fontSize = '20px'; p.style.paddingTop = '2em';
Einfügen
Wenn dieser DOM-Knoten leer ist, zum Beispiel
, , dann verwenden Sie direkt innerHTML = '< span>child' kann den Inhalt des DOM-Knotens ändern, was dem „Einfügen“ eines neuen DOM-Knotens entspricht. Wenn der DOM-Knoten nicht leer ist, können Sie dies nicht tun, da
innerHTML alle ursprünglichen untergeordneten Knoten direkt ersetzt. Es gibt zwei Möglichkeiten, neue Knoten einzufügen. Eine besteht darin,
appendChild zu verwenden, um einen untergeordneten Knoten zum letzten untergeordneten Knoten des übergeordneten Knotens hinzuzufügen. Zum Beispiel:
<!-- HTML结构 --> <p id="js">JavaScript</p> <p id="list"> <p id="java">Java</p> <p id="python">Python</p> <p id="scheme">Scheme</p> </p>
JavaScript :
var js = document.getElementById('js'), list = document.getElementById('list'); list.appendChild(js);
<!-- HTML结构 --> <p id="list"> <p id="java">Java</p> <p id="python">Python</p> <p id="scheme">Scheme</p> <p id="js">JavaScript</p> </p>
Häufiger erstellen wir einen neuen Knoten von Grund auf und fügen ihn an der angegebenen Position ein:
var list = document.getElementById('list'), haskell = document.createElement('p'); haskell.id = 'haskell'; haskell.innerText = 'Haskell'; list.appendChild(haskell);
<!-- HTML结构 --> <p id="list"> <p id="java">Java</p> <p id="python">Python</p> <p id="scheme">Scheme</p> <p id="haskell">Haskell</p> </p>