JavaScript/修改元素
外观
在本页中,我们展示如何更改 HTML 元素,即 DOM 节点的两个不同方面。
- 它的内容(只有一个,或者没有)
- 它的任何属性(可能有很多)
请注意内容和属性之间的这种区别。
<!-- in general: -->
<element_name attribute_name="attribute_value">content of the element</element_name>
<!-- a concrete example. 'href' is an attribute. 'Visit IANA...' is the content. -->
<a href="https://www.example.com">Visit IANA's example domain.</a>
我们使用以下示例 HTML 页面来演示各种可能性。
<!DOCTYPE html>
<html>
<head>
<script>
function show() {
"use strict";
// ...
}
</script>
</head>
<body id="body" style="margin:2em">
<p id="p1" style="background: aqua">A blue paragraph</p>
<svg id="svgSrc" width="100" height="100" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="25" fill="green"/>
</svg>
<p />
<a id="refToSomewhere" href="https://www.example.com">Visit IANA's example domain.</a>
<p />
<button id="buttonShow" onclick="show()">Start</button>
</body>
</html>
点击button
会调用函数show
。示例应包含在其中。
我们以一个段落p
为例。要更改它的内容(文本),只需将新值赋给它的innerHTML
。
function show() {
"use strict";
const elem = document.getElementById("p1");
elem.innerHTML = "New text in the paragraph.";
}
或者,为了用不同的 HTML 元素做同样的事情,我们更改 SVG 图形。
function show() {
"use strict";
const elem = document.getElementById("svgSrc");
elem.innerHTML = "<rect width='80' height='40' fill='blue'/>";
}
因为新文本是 HTML 代码,所以您可以“误用”这种方法添加子节点。
function show() {
"use strict";
const elem = document.getElementById("p1");
elem.innerHTML = "New text in the paragraph.<p>next P</p><p>and even one more P</p>";
}
脚本插入了两个额外的段落,但不在第一个段落之后。它们位于第一个段落中。
<p id="p1">New text in the paragraph
<p>next P</p>
<p>and even one more P</p>
</p>
通常,更改属性的语法如下:
element_name.attribute_name = "new value";
// or:
element_name.setAttribute("attribute_name", "new value");
HTML 元素a
有一个href
属性:<a id="refToSomewhere" href="https://www.example.com">...</a>
。这个href
属性可以被修改。
function show() {
"use strict";
const elem = document.getElementById("refToSomewhere");
elem.href = "https://wikibooks.cn";
elem.innerHTML = "Link changed";
}
首先,找到该元素。其次,该函数为其属性“href”(和innerHTML)分配一个新值。
以下示例更改了img
元素的src
属性和button
元素的value
属性。
// The HTML
<img id="imgOne" src="myPicture.jpg">
<input id="buttonOne" value="I'm a button!">
// The JavaScript
document.getElementById("imgOne").src = "otherPicture.jpg";
const b = document.getElementById("buttonOne");
b.value = "I'm a changed button";
也可以通过setAttribute
函数修改属性。
function show() {
"use strict";
const elem = document.getElementById("refToSomewhere");
elem.setAttribute("href", "https://wikibooks.cn");
elem.innerHTML = "Link changed";
}