æ¬ç« æä¾äºä¸äºä»ç»å¦ä½ä½¿ç¨ DOM è¿è¡ Web 以å XML å¼åçè¾é¿ç¤ºä¾ãå¨å¯è½çæ åµä¸ï¼ç¤ºä¾åªä½¿ç¨ JavaScript ä¸è¾å¸¸è§ç APIãæå·§ä»¥åæ¨¡å¼æ¥æä½ææ¡£å¯¹è±¡ã
ç¤ºä¾ 1ï¼é«åº¦å宽度ä¸é¢ç示ä¾å±ç¤ºäºä¸å尺寸çå¾ç对 height
å width
屿§ç使ç¨ï¼
<!doctype html>
<html lang="zh-CN">
<head>
<title>宽度/é«åº¦ç¤ºä¾</title>
<script>
function init() {
const arrImages = new Array(3);
arrImages[0] = document.getElementById("image1");
arrImages[1] = document.getElementById("image2");
arrImages[2] = document.getElementById("image3");
const objOutput = document.getElementById("output");
let strHtml = "<ul>";
for (let i = 0; i < arrImages.length; i++) {
strHtml +=
"<li>å¾ç" +
(i + 1) +
": height=" +
arrImages[i].height +
", width=" +
arrImages[i].width +
", style.height=" +
arrImages[i].style.height +
", style.width=" +
arrImages[i].style.width +
"<\/li>";
}
strHtml += "<\/ul>";
objOutput.innerHTML = strHtml;
}
</script>
</head>
<body onload="init();">
<p>
å¾ç 1ï¼æ é«åº¦ãå®½åº¦åæ ·å¼
<img
id="image1"
src="https://www.mozilla.org/images/mozilla-banner.gif" />
</p>
<p>
å¾ç 2ï¼height="50"ï¼width="500"ï¼æ æ ·å¼
<img
id="image2"
src="https://www.mozilla.org/images/mozilla-banner.gif"
height="50"
width="500" />
</p>
<p>
å¾ç 3ï¼æ é«åº¦ãå®½åº¦ï¼æ ·å¼ä¸è®¾ç½®äºâheight: 50px; width: 500px;â
<img
id="image3"
src="https://www.mozilla.org/images/mozilla-banner.gif"
style="height: 50px; width: 500px;" />
</p>
<div id="output"></div>
</body>
</html>
ç¤ºä¾ 2ï¼å¾ç屿§
<!doctype html>
<html lang="zh-CN">
<head>
<title>ä¿®æ¹å¾ççè¾¹æ¡</title>
<script>
function setBorderWidth(width) {
document.getElementById("img1").style.borderWidth = width + "px";
}
</script>
</head>
<body>
<p>
<img
id="img1"
src="image1.gif"
style="border: 5px solid green;"
width="100"
height="100"
alt="border test" />
</p>
<form name="FormName">
<input
type="button"
value="设置边æ¡ä¸º 20px 宽"
onclick="setBorderWidth(20);" />
<input
type="button"
value="设置边æ¡ä¸º 5px 宽"
onclick="setBorderWidth(5);" />
</form>
</body>
</html>
ç¤ºä¾ 3ï¼ä¿®æ¹æ ·å¼
å¨è¿ä¸ªç®åçä¾åä¸ï¼HTML 段è½å ç´ çä¸äºåºæ¬æ ·å¼å±æ§æ¯ä½¿ç¨è¯¥å ç´ ä¸çæ ·å¼å¯¹è±¡å该对象ç CSS æ ·å¼å±æ§æ¥è®¿é®çï¼è¿äºå¯¹è±¡å¯ä»¥ä» DOM 䏿£ç´¢å设置ãå¨è¿ä¸ªç¤ºä¾ä¸ï¼ä½ æ¯ç´æ¥æä½åä¸ªæ ·å¼çãå¨ä¸ä¸ä¸ªä¾åä¸ï¼è§ç¤ºä¾ 4ï¼ï¼ä½ å¯ä»¥ä½¿ç¨æ ·å¼è¡¨åå ¶è§åæ¥æ¹åæ´ä¸ªææ¡£çæ ·å¼ã
<!doctype html>
<html lang="zh-CN">
<head>
<title>æ¹åé¢è²ååä½å¤§å°ç示ä¾</title>
<script>
function changeText() {
const p = document.getElementById("pid");
p.style.color = "blue";
p.style.fontSize = "18pt";
}
</script>
</head>
<body>
<p id="pid" onclick="window.location.href = 'http://www.cnn.com/';">
龿¥æå
</p>
<form>
<p><input value="rec" type="button" onclick="changeText();" /></p>
</form>
</body>
</html>
ç¤ºä¾ 4ï¼ä½¿ç¨æ ·å¼è¡¨
document
对象ç styleSheets
屿§è¿åè¯¥ææ¡£ä¸å·²å è½½çæ ·å¼è¡¨å表ãä½ å¯ä»¥ä½¿ç¨ styleheetãstyle å CSSRule
对象åç¬è®¿é®è¿äºæ ·å¼è¡¨åå
¶è§åï¼å¦æ¬ä¾æç¤ºï¼å®å°ææçæ ·å¼è§å鿩卿å°å°æ§å¶å°ã
const ss = document.styleSheets;
for (let i = 0; i < ss.length; i++) {
for (let j = 0; j < ss[i].cssRules.length; j++) {
dump(`${ss[i].cssRules[j].selectorText}\n`);
}
}
ä¸é¢çæ¯ä¸ä¸ªåªå®ä¹äºä¸æ¡æ ·å¼è§åçåä¸ªæ ·å¼è¡¨çææ¡£ï¼
body {
background-color: darkblue;
}
p {
font-family: Arial;
font-size: 10pt;
margin-left: 0.125in;
}
#lumpy {
display: none;
}
è¯¥èæ¬çè¾åºæ¯è¿æ ·çï¼
BODY P #LUMPYç¤ºä¾ 5ï¼äºä»¶ä¼ æ
æ¬å®ä¾ä»¥ä¸ç§é常ç®åçæ¹å¼æ¼ç¤ºäºäºä»¶æ¯å¦ä½å¨ DOM ä¸å¯å¨åå¤ççãå½è¿ä¸ª HTML ææ¡£ç BODY å è½½æ¶ï¼ä¸ä¸ªäºä»¶çå¬å¨è¢«æ³¨åå¨ TABLE çé¡¶è¡ãäºä»¶çå¬å¨éè¿æ§è¡å½æ° stopEvent æ¥å¤çäºä»¶ï¼å®æ¹åäºè¡¨æ ¼åºé¨åå æ ¼çå¼ã
ç¶èï¼stopEvent ä¹è°ç¨äºäºä»¶å¯¹è±¡æ¹æ³ event.stopPropagation
ï¼å®ä½¿äºä»¶ä¸åå DOM ä¸å泡ã请注æï¼è¡¨æ ¼æ¬èº«æä¸ä¸ª onclick
äºä»¶å¤çå¨ï¼å½è¡¨æ ¼è¢«ç¹å»æ¶åºè¯¥æ¾ç¤ºä¸æ¡ä¿¡æ¯ã使¯ stopEvent æ¹æ³å·²ç»åæ¢äºä¼ æï¼æä»¥å¨è¡¨æ ¼ä¸çæ°æ®è¢«æ´æ°åï¼äºä»¶é¶æ®µå®é
ä¸å·²ç»ç»æï¼å¹¶ä¸æ¾ç¤ºäºä¸ä¸ªè¦æ¥æ¡æ¥ç¡®è®¤è¿ä¸ç¹ã
<!doctype html>
<html lang="zh-CN">
<head>
<title>äºä»¶ä¼ æ</title>
<style>
#t-daddy {
border: 1px solid red;
}
#c1 {
background-color: pink;
}
</style>
<script>
function stopEvent(event) {
const c2 = document.getElementById("c2");
c2.textContent = "hello";
// è¿åºè¯¥é»æ¢ t-daddy æ¥æ¶ç¹å»äºä»¶
event.stopPropagation();
alert("äºä»¶ä¼ éç»æ¢");
}
function load() {
const elem = document.getElementById("tbl1");
elem.addEventListener("click", stopEvent, false);
}
</script>
</head>
<body onload="load();">
<table id="t-daddy" onclick="alert('hi');">
<tr id="tbl1">
<td id="c1">ä¸</td>
</tr>
<tr>
<td id="c2">äº</td>
</tr>
</table>
</body>
</html>
ç¤ºä¾ 6ï¼getComputedStyle
è¿ä¸ªä¾åæ¼ç¤ºäºå¦ä½ä½¿ç¨ window.getComputedStyle
æ¹æ³æ¥è·åä¸ä¸ªå
ç´ çæ ·å¼ï¼è¿äºæ ·å¼ä¸æ¯ç¨ style
屿§æç¨ JavaScript 设置çï¼ä¾å¦ elt.style.backgroundColor="rgb(173, 216, 230)"
ï¼ãåé¢è¿äºç±»åçæ ·å¼å¯ä»¥ç¨æ´ç´æ¥ç elt.style
屿§æ¥æ£ç´¢ï¼å
¶å±æ§å¨ DOM CSS 屿§å表ä¸ååºã
getComputedStyle()
è¿åä¸ä¸ª CSSStyleDeclaration
对象ï¼å
¶åä¸ªæ ·å¼å±æ§å¯ä»¥ç¨è¿ä¸ªå¯¹è±¡ç getPropertyValue()
æ¹æ³è¿è¡å¼ç¨ï¼æ£å¦ä¸é¢çç¤ºä¾ææ¡£æç¤ºã
<!doctype html>
<html lang="zh-CN">
<head>
<title>getComputedStyle 示ä¾</title>
<script>
function cStyles() {
const RefDiv = document.getElementById("d1");
const txtHeight = document.getElementById("t1");
const h_style = document.defaultView
.getComputedStyle(RefDiv, null)
.getPropertyValue("height");
txtHeight.value = h_style;
const txtWidth = document.getElementById("t2");
const w_style = document.defaultView
.getComputedStyle(RefDiv, null)
.getPropertyValue("width");
txtWidth.value = w_style;
const txtBackgroundColor = document.getElementById("t3");
const b_style = document.defaultView
.getComputedStyle(RefDiv, null)
.getPropertyValue("background-color");
txtBackgroundColor.value = b_style;
}
</script>
<style>
#d1 {
margin-left: 10px;
background-color: rgb(173, 216, 230);
height: 20px;
max-width: 20px;
}
</style>
</head>
<body>
<div id="d1"> </div>
<form action="">
<p>
<button type="button" onclick="cStyles();">getComputedStyle</button>
height<input id="t1" type="text" value="1" /> max-width<input
id="t2"
type="text"
value="2" />
bg-color<input id="t3" type="text" value="3" />
</p>
</form>
</body>
</html>
ç¤ºä¾ 7ï¼æ¾ç¤ºäºä»¶å¯¹è±¡ç屿§
æ¬ç¤ºä¾ä½¿ç¨ DOM æ¹æ³æ¥æ¾ç¤º onload
event
å¯¹è±¡çææå±æ§åå
¶å¨è¡¨æ ¼ä¸çå¼ãå®è¿å±ç¤ºäºä¸ç§æç¨çææ¯ï¼å³ä½¿ç¨ for...in
å¾ªç¯æ¥è¿ä»£å¯¹è±¡ç屿§ä»¥è·åå
¶å¼ã
äºä»¶å¯¹è±¡ç屿§å¨ä¸åçæµè§å¨ä¹é´æå¾å¤§çä¸åï¼WHATWG DOM æ åååºäºæ åç屿§ï¼ç¶èè®¸å¤æµè§å¨å¯¹è¿äºå±æ§åäºå¾å¤§çæ©å±ã
æä¸é¢çä»£ç æ¾å°ä¸ä¸ªç©ºç½çææ¬æä»¶ä¸ï¼å¹¶æå®å è½½å°åç§æµè§å¨ä¸ï¼ä½ ä¼å¯¹ä¸åæ°éååç§°ç屿§æå°æè®¶ãä½ å¯è½è¿æ³å¨é¡µé¢ä¸æ·»å ä¸äºå ç´ ï¼ä»ä¸åçäºä»¶å¤çç¨åºä¸è°ç¨è¿ä¸ªå½æ°ã
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>æ¾ç¤ºäºä»¶ç屿§</title>
<style>
table {
border-collapse: collapse;
}
thead {
font-weight: bold;
}
td {
padding: 2px 10px 2px 10px;
}
.odd {
background-color: #efdfef;
}
.even {
background-color: #ffffff;
}
</style>
<script>
function showEventProperties(e) {
function addCell(row, text) {
const cell = row.insertCell(-1);
cell.appendChild(document.createTextNode(text));
}
const event = e || window.event;
document.getElementById("eventType").innerHTML = event.type;
const table = document.createElement("table");
const thead = table.createTHead();
let row = thead.insertRow(-1);
const labelList = ["#", "Property", "Value"];
const len = labelList.length;
for (let i = 0; i < len; i++) {
addCell(row, labelList[i]);
}
const tbody = document.createElement("tbody");
table.appendChild(tbody);
for (const p in event) {
row = tbody.insertRow(-1);
row.className = row.rowIndex % 2 ? "odd" : "even";
addCell(row, row.rowIndex);
addCell(row, p);
addCell(row, event[p]);
}
document.body.appendChild(table);
}
window.onload = (event) => {
showEventProperties(event);
};
</script>
</head>
<body>
<h1>DOM <span id="eventType"></span> äºä»¶å¯¹è±¡ç屿§å表</h1>
</body>
</html>
ç¤ºä¾ 8ï¼ä½¿ç¨ DOM Table æ¥å£
DOM HTMLTableElement
æ¥å£æä¾äºä¸äºç¨äºå建åæä½è¡¨æ ¼çä¾¿å©æ¹æ³ã两个ç»å¸¸ä½¿ç¨çæ¹æ³æ¯ HTMLTableElement.insertRow
å HTMLTableRowElement.insertCell
ã
è¦å¢å ä¸è¡åä¸äºåå æ ¼å°ç°æç表ï¼
<table id="table0">
<tr>
<td>Row 0 Cell 0</td>
<td>Row 0 Cell 1</td>
</tr>
</table>
<script>
const table = document.getElementById("table0");
const row = table.insertRow(-1);
let cell;
let text;
for (let i = 0; i < 2; i++) {
cell = row.insertCell(-1);
text = "Row " + row.rowIndex + " Cell " + i;
cell.appendChild(document.createTextNode(text));
}
</script>
夿³¨
innerHTML
屿§ä¸åºè¯¥è¢«ç¨æ¥ä¿®æ¹è¡¨æ ¼ï¼å³ä½¿ä½ å¯ä»¥ç¨å®æ¥åä¸ä¸ªå®æ´çè¡¨æ ¼æåå
æ ¼çå
容ãdocument.createElement
å Node.appendChild
æ¥å建è¡ååå
æ ¼ï¼IE è¦æ±å®ä»¬è¢«è¿½å å° <tbody>
å
ç´ ï¼èå
¶ä»æµè§å¨å°å
许追å å° <table>
å
ç´ ï¼è¡å°è¢«æ·»å å°æåç <tbody>
å
ç´ ï¼ãHTMLTableElement
æ¥å£çä¾¿å©æ¹æ³ï¼å¯ä»¥ç¨æ¥å建åä¿®æ¹è¡¨æ ¼ãRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4