比較詳細(xì)的javascript DOM 學(xué)習(xí)筆記第2/2頁(yè)
5.創(chuàng)建新節(jié)點(diǎn)
最常用到的幾個(gè)方法是
createDocumentFragment()--創(chuàng)建文檔碎片節(jié)點(diǎn)
createElement(tagname)--創(chuàng)建標(biāo)簽名為tagname的元素
createTextNode(text)--創(chuàng)建包含文本text的文本節(jié)點(diǎn)
createElement()、createTextNode()、appendChild()
<head>
<title>createElement() Example</title>
<script type="text/javascript">
function createMessage() {
var oP = document.createElement("p");
var oText = document.createTextNode("Hello World!");
oP.appendChild(oText);
document.body.appendChild(oP);
}
</script>
</head>
<body onload="createMessage()">
</body>
</html>
removeChild()、replaceChild()、insertBefore()
刪除節(jié)點(diǎn)
<head>
<title>removeChild() Example</title>
<script type="text/javascript">
function removeMessage() {
var oP = document.body.getElementsByTagName("p")[0];
oP.parentNode.removeChild(oP);
}
</script>
</head>
<body onload="removeMessage()">
<p>Hello World!</p>
</body>
</html>
替換
<head>
<title>replaceChild() Example</title>
<script type="text/javascript">
function replaceMessage() {
var oNewP = document.createElement("p");
var oText = document.createTextNode("Hello Universe!");
oNewP.appendChild(oText);
var oOldP = document.body.getElementsByTagName("p")[0];
oOldP.parentNode.replaceChild(oNewP, oOldP);
}
</script>
</head>
<body onload="replaceMessage()">
<p>Hello World!</p>
</body>
</html>
新消息添加到舊消息之前
<head>
<title>insertBefore() Example</title>
<script type="text/javascript">
function insertMessage() {
var oNewP = document.createElement("p");
var oText = document.createTextNode("Hello Universe!");
oNewP.appendChild(oText);
var oOldP = document.getElementsByTagName("p")[0];
document.body.insertBefore(oNewP, oOldP);
}
</script>
</head>
<body onload="insertMessage()">
<p>Hello World!</p>
</body>
</html>
createDocumentFragment()
一旦把節(jié)點(diǎn)添加到document.body(或者它的后代節(jié)點(diǎn))中,頁(yè)面就會(huì)更新并反映出這個(gè)變化。對(duì)于少量的更新,這是很好的,然而,當(dāng)要向document添加大量數(shù)據(jù)時(shí),如果逐個(gè)添加這些變動(dòng),這個(gè)過(guò)程有可能會(huì)十分緩慢。為解決這個(gè)問(wèn)題,可以創(chuàng)建一個(gè)文檔碎片,把所有的新節(jié)點(diǎn)附加其上,然后把文檔碎片的內(nèi)容一次性添加到document中,假如想創(chuàng)建十個(gè)新段落。
<head>
<title>insertBefore() Example</title>
<script type="text/javascript">
function addMessages() {
var arrText = ["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth"];
var oFragment = document.createDocumentFragment();
for (var i=0; i < arrText.length; i++) {
var oP = document.createElement("p");
var oText = document.createTextNode(arrText[i]);
oP.appendChild(oText);
oFragment.appendChild(oP);
}
document.body.appendChild(oFragment);
}
</script>
</head>
<body onload="addMessages()">
</body>
</html>
6.讓特性像屬性一樣
大部分情況下,HTML DOM元素中包含的所有特性都是可作為屬性。
假設(shè)有如下圖像元素:
<img src = "mypicture.jpg" border=0 />
如果要使用核心的DOM來(lái)獲取和設(shè)置src和border特性,那么要用getAttribute()和setAttribute()方法:
alert(oImg.getAttribute("src"));
alert(oImg.getAttribute("border"));
oImg.setAttribute("src","mypicture2.jpg");
oImg.setAttribute("border",1);
然而,使用HTML DOM,可以使用同樣名稱(chēng)的屬性來(lái)獲取和設(shè)置這些值:
alert(oImg.src);
alert(oImg.border);
oImg.src="mypicture2.jpg";
oImg.border ="1";
唯一的特性名和屬性名不一樣的特例是class屬性,它是用來(lái)指定應(yīng)用于某個(gè)元素的一個(gè)CSS類(lèi),因?yàn)閏lass在ECMAScript中是一個(gè)保留字,在javascript中,它不能被作為變量名、屬性名或都函數(shù)名。于是,相應(yīng)的屬性名就變成了className;
注:IE在setAttribute()上有很大的問(wèn)題,最好盡可能使用屬性。
7.table方法
為了協(xié)助建立表格,HTML DOM給<table/>,<tbody/>和<tr/>等元素添加了一些特性和方法。
給<table/>元素添加了以下內(nèi)容:
| 特性/方法 | 說(shuō)明 |
| caption | 指向<caption/>元素并將其放入表格 |
| tBodies | <tbody/>元素的集合 |
| tFoot | 指向<tfoot/>元素(如果存在) |
| tHead | 指向<thead/>元素(如果存在) |
| rows | 表格中所有行的集合 |
| createTHead() | 創(chuàng)建<thead/>元素并將其放入表格 |
| createTFood() | 創(chuàng)建<tfoot/>元素并將其放入表格 |
| createCpation() | 創(chuàng)建<caption/>元素并將其放入表格 |
| deleteTHead() | 刪除<thead/>元素 |
| deleteTFood() | 刪除<tfoot/>元素 |
| deleteCaption() | 刪除<caption/>元素 |
| deleteRow(position) | 刪除指定位置上的行 |
| insertRow(position) | 在rows集合中的指定位置上插入一個(gè)新行 |
<tbody/>元素添加了以下內(nèi)容
| 特性/方法 | 說(shuō)明 |
| rows | <tbody/>中所有行的集合 |
| deleteRow(position) | 刪除指定位置上的行 |
| insertRow(position) | 在rows集合中的指定位置上插入一個(gè)新行 |
<tr/>元素添加了以下內(nèi)容
| 特性/方法 | 說(shuō)明 |
| cells | <tr/>元素中所有的單元格的集合 |
| deleteCell(postion) | 刪除給定位置上的單元格 |
| insertCell(postion) | 在cells集合的給點(diǎn)位置上插入一個(gè)新的單元格 |
8.遍歷DOM
NodeIterator,TreeWalker
DOM Level2的功能,這些功能只有在Mozilla和Konqueror/Safari中才有,這里就不介紹了。
相關(guān)文章
uni-app如何讀取本地json數(shù)據(jù)文件并渲染到頁(yè)面上
在做前端開(kāi)發(fā)的時(shí)候,少不了要用一些模擬的json的數(shù)據(jù)來(lái)進(jìn)行測(cè)試,這篇文章主要給大家介紹了關(guān)于uni-app如何讀取本地json數(shù)據(jù)文件并渲染到頁(yè)面上的相關(guān)資料,需要的朋友可以參考下2022-08-08
uniapp使用uni-imei插件獲取手機(jī)的設(shè)備號(hào)
uniapp框架是一款開(kāi)發(fā)跨平臺(tái)應(yīng)用的工具,它支持iOS、Android以及Web等多個(gè)平臺(tái),在這些平臺(tái)中,uniapp可以訪問(wèn)某些設(shè)備的硬件信息,這篇文章主要給大家介紹了關(guān)于uniapp使用uni-imei插件獲取手機(jī)設(shè)備號(hào)的相關(guān)資料,需要的朋友可以參考下2024-01-01
基于Bootstrap實(shí)現(xiàn)城市三級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了基于BootStrap實(shí)現(xiàn)城市三級(jí)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Popup彈出框添加數(shù)據(jù)實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Popup彈出框添加數(shù)據(jù)的簡(jiǎn)單實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
JavaScript知識(shí)點(diǎn)總結(jié)(四)之邏輯OR運(yùn)算符詳解
這篇文章主要介紹了JavaScript知識(shí)點(diǎn)總結(jié)(四)之邏輯OR運(yùn)算符詳解的相關(guān)資料,在JavaScript中,邏輯OR運(yùn)算符用||表示。本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-05-05
innerHTML 和 getElementsByName 在IE下面的bug 的解決
innerHTML 真的一個(gè)麻煩的東西。IE 和 firefox 對(duì)dom 處理的方式不是很一樣。IE 對(duì)動(dòng)態(tài)加載的很多dom 不支持動(dòng)態(tài)更新。2010-04-04

