JavaScript操作的DOM對象
什麽叫DOM?
DOM是文檔對象模型(Document Object Model,是基於瀏覽器編程(在本教程中,可以說就是DHTML編程)的一套API接口,W3C出臺的推薦標準,每個瀏覽器都有一些細微的差別,其中以Mozilla的瀏覽器最與標準接近。
DOM屬於瀏覽器,而不是JavaScript語言規範裏的規定的核心內容。
DOM節點樹
在HTML中所有的事物都有節點,DOM將HTML文檔視作節點樹,通過DOM,節點樹中的是所有節點都可以通過JavaScript進行訪問,所有的HTML元素都可以被修改、創建、刪除。
查找元素
1、直接查找
方法名 | 描述 |
getElementById(id) (document) |
獲取有指定惟一ID屬性值文檔中的元素 |
getElementsByTagName_r(name) | 返回當前元素中有指定標記名的子元素的數組 |
document.getElementsByClassName | 根據屬性獲取標簽集合 |
getAttribute(name) |
返回元素的屬性值,屬性由name指定
|
2、間接查找
屬性名 | 描述 |
childNodes | 返回當前元素所有子元素的數組 |
childNodes | 返回當前元素的所有子元素 |
firstChild | 返回當前元素的第一個下級子元素 |
lastChild | 返回當前元素的最後一個子元素 |
nextSibling |
返回緊跟在當前元素後面的元素 |
previousSibling | 返回緊跟在當前元素前面的元素 |
parentElement | 返回其父節點標簽元素 |
children | 返回其所有子標簽 |
firstElementChild | 返回第一個子標簽元素 |
lastElementChild | 返回最後一個子標簽元素 |
nextElementtSibling | 返回下一個兄弟標簽元素 |
previousElementSibling | 返回上一個兄弟標簽元素 |
利用XML的強大功能和靈活性,將XML作為瀏覽器和服務器之間的通信介質。
操作元素
1、動態創建內容時所用的W3C DOM屬性和方法
屬性/方法 | 描述 |
document.createElement_x(tagName) | 文檔對象上的createElement_x方法可以創建由tagName指定的元素。如果以串div作為方法參數,就會生成一個div元素 |
document.createTextNode(text) | 文檔對象的createTextNode方法會創建一個包含靜態文本的節點 |
<element>.appendChild(childNode) | appendChild方法將指定的節點增加到當前元素的子節點列表(作為一個新的子節點)。 |
<element>.setAttribute(name, value) | 這些方法分別獲得和設置元素中name屬性的值 |
<element>.insertBefore(newNode, targetNode) | 將節點newNode作為當前元素的子節點插到targetNode元素前面 |
<element>.removeAttribute(name) | 這個方法從元素中刪除屬性name |
<element>.removeChild(childNode) | 這個方法從元素中刪除子元素childNode |
<element>.replaceChild(newNode, oldNode) | 這個方法將節點oldNode替換為節點newNode |
<element>.hasChildnodes() | 這個方法返回一個布爾值,指示元素是否有子元素 |
1.訪問DOM中的元素,主要通過getElementById(),getElementsByTagName(),getElementsByClassName()方法獲取,如下:
創建文本框:
[html]
- UserName:<input type="text" name="uname" class="u">
UserName:<input type="text" name="uname" class="u">
通過js獲取文本框內容:
[javascript]
/通過id獲取文本框內容
document.getElementById("name").value;
//通過標簽名文本框內容
document.getElementsByTagName("input")[0].value;
//通過name獲取文本框內容
document.getElementsByName("uname")[0].value;
//通過class獲取文本框內容
document.getElementsByClassName("u")[0].value
/通過id獲取文本框內容 document.getElementById("name").value; //通過標簽名文本框內容 document.getElementsByTagName("input")[0].value; //通過name獲取文本框內容 document.getElementsByName("uname")[0].value; //通過class獲取文本框內容 document.getElementsByClassName("u")[0].value
2.給DOM中元素添加屬性
創建文本框:
[html]
- <input type="text" name="uname" class="u">
<input type="text" name="uname" class="u">
通過js代碼給input元素添加id屬性
[java]
- document.getElementsByTagName("input")[0].id="name";
document.getElementsByTagName("input")[0].id="name";
3.在DOM元素中插入內容
div:
[html]
- <div id="context">Hello,2017</div>
<div id="context">Hello,2017</div>
在js中使用innerHTML屬性插入內容,使用getAttribute()獲取標簽中的屬性值
[javascript]
- //將內容插入到指定的元素中並替換元素中已有的內容
- document.getElementById("context").innerHTML="節日快樂";
//將內容插入到指定的元素中並替換元素中已有的內容 document.getElementById("context").innerHTML="節日快樂";
[javascript]
- //獲取元素中屬性值
- document.getElementById("context").getAttribute("id");
//獲取元素中屬性值 document.getElementById("context").getAttribute("id");
4.在DOM中添加、刪除元素
div:
[html]
- <div id="context">
- <font color="red">Hello,2017</font>
- </div>
<div id="context"> <font color="red">Hello,2017</font> </div>
1)在js中使用appendChild()在dom中追加元素
[html]
- //DOM中創建button新元素
- var btn=document.createElement("button");
- //文本內容
- var Context=document.createTextNode("擺渡人,你值得看!");
- //將內容追加到button標簽中
- btn.appendChild(Context);
- //在html中指定的元素中追加新元素
- document.getElementById("div1").appendChild(btn);
//DOM中創建button新元素 var btn=document.createElement("button"); //文本內容 var Context=document.createTextNode("擺渡人,你值得看!"); //將內容追加到button標簽中 btn.appendChild(Context); //在html中指定的元素中追加新元素 document.getElementById("div1").appendChild(btn);
2)在js中
使用removeChild()在dom中刪除元素
[html]
- //獲取父節點
- var pare=document.getElementById("context");
- //獲取子節點
- var p=document.getElementsByTagName("font")[0];
- //刪除父節點下面的子節點,如果不獲取父節點直接來刪除子節點就無法刪除
- pare.removeChild(p)
JavaScript操作的DOM對象