1. 程式人生 > >DOM節點訪問關係與操作示例

DOM節點訪問關係與操作示例

一.DOM 訪問關係(節點的獲得)

節點的訪問關係,是以屬性的方式存在的。
DOM的節點並不是孤立的,因此可以通過DOM節點之間的相對關係對它們進行訪問。

父節點 ( parentNode )

呼叫者就是節點。一個節點只有一個父節點。呼叫方式就是節點.parentNode.

   //box1是box的父節點
    var box2 = document.getElementsByClassName("box2")   [0];
    var box2 = document.getElementById("box2")
    console.log(box2.parentNode);//
在控制檯中列印父盒子box1

兄弟節點

Sibling就是兄弟的意思。
Next:下一個的意思。
Previous:前一個的意思。

nextSibling:呼叫者是節點。IE678中指下一個元素節點(標籤)。在火狐谷歌IE9+以後都指的是下一個節點(包括空文件和換行節點)。

nextElementSibling:在火狐谷歌IE9都指的是下一個元素節點。

總結:在IE678中用nextSibling,在火狐谷歌IE9+以後用nextElementSibling

//通常的程式碼書寫格式
下一個兄弟節點=節點.nextElementSibling || 節點.nextSibling
//nextElementSibling下一個兄弟節點
console.log(box2.nextElementSibling);

previousSibling:呼叫者是節點。IE678中指前一個元素節點(標籤)。在火狐谷歌IE9+以後都指的是前一個節點(包括空文件和換行節點)。

previousElementSibling:在火狐谷歌IE9都指的是前一個元素節點。

//通常的程式碼書寫格式
前一個兄弟節點=節點.previousElementSibling|| 節點.previousSibling

單個子節點

firstChild:呼叫者是父節點。IE678中指第一個子元素節點(標籤)。在火狐谷歌IE9+以後都指的是第一個節點(包括空文件和換行節點)。

firstElementChild:在火狐谷歌IE9都指的第一個元素節點。

//通常的程式碼書寫格式
第一個子節點=父節點.firstElementChild || 父節點.firstChild

lastChild:呼叫者是父節點。IE678中指最後一個子元素節點(標籤)。在火狐谷歌IE9+以後都指的是最後一個節點(包括空文件和換行節點)。

lastElementChild:在火狐谷歌IE9都指的最後一個元素節點。

//通常的程式碼書寫格式
第一個子節點=父節點.lastElementChild|| 父節點.lastChild

所有子節點

childNodes:它是標準屬性,它返回指定元素的子元素集合,包括HTML節點,所有屬性,文字節點 (他還是W3C的親兒子 )

火狐 谷歌等高本版會把換行也看做是子節點
nodeType==1時才是元素節點(標籤)
nodeType == 1 表示的是元素節點 記住 元素就是標籤
nodeType == 2 表示是屬性節點 瞭解
nodeType == 3 是文字節點 瞭解

//通常的程式碼書寫格式
子節點陣列 = 父節點.childNodes;   //獲取所有節點。

children:非標準屬性,它返回指定元素的子元素集合。

但它只返回HTML節點,甚至不返回文字節點,雖然不是標準的DOM屬性,但它和innerHTML方法一樣,得到了幾乎所有瀏覽器的支援。
children在IE6/7/8中包含註釋節點
在IE678中,註釋節點不要寫在裡面。

//通常的程式碼書寫格式
子節點陣列 = 父節點.children;   //用的最多。

DOM的節點操作

獲取:getAttribute(名稱)
設定:setAttribute(名稱, 值)
刪除:removeAttribute(名稱)
注意:IE6、7不支援。
呼叫者:節點。 有引數。 沒有返回值。
每一個方法意義不同。

建立

var aaa = document.createElement("li");
var bbb = document.createElement("afadsfadsf");
    console.log(aaa);//box中多出li標籤
    console.log(bbb);//box中多出afadsfadsf標籤

新增

   var box1 = document.getElementsByClassName("box1")[0];
    box1.appendChild(aaa);
    box1.insertBefore(bbb,aaa);//在bbb之前新增aaa

刪除

 box1.removeChild(bbb);
    aaa.parentNode.removeChild(aaa);//自殺,自己刪除自己

克隆

var ccc = box1.cloneNode();//只克隆節點本身不克隆內容
    var ddd = box1.cloneNode(true);//克隆節點本身和節點內容
    console.log(ccc);
    console.log(ddd);

總體程式碼

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<div class="box1">
    <div class="box2" id="box2"></div>
    <div class="box3"></div>
</div>

<script>

    //節點的訪問關係是以屬性形式存在

    //1.box1是box的父節點
//    var box2 = document.getElementsByClassName("box2")[0];
//    var box2 = document.getElementById("box2")
//    console.log(box2.parentNode);
//
//    //2.nextElementSibling下一個兄弟節點
//    console.log(box2.nextElementSibling);
//
//    //firstElementChild第一個子節點
//    console.log(box2.parentNode.firstElementChild);
//
//    //所有子節點
//    console.log(box2.parentNode.childNodes);
//    console.log(box2.parentNode.children);



    //節點的操作
    //1.建立
    var aaa = document.createElement("li");
    var bbb = document.createElement("afadsfadsf");
    console.log(aaa);
    console.log(bbb);

    //新增
    var box1 = document.getElementsByClassName("box1")[0];
    box1.appendChild(aaa);
    box1.insertBefore(bbb,aaa);

    //刪除
    box1.removeChild(bbb);
    aaa.parentNode.removeChild(aaa);//自殺,自己刪除自己

    //克隆
    var ccc = box1.cloneNode();//只克隆節點本身不克隆內容
    var ddd = box1.cloneNode(true);//克隆節點本身和節點內容
    console.log(ccc);
    console.log(ddd);

</script>
</body>
</html>

節點屬性的操作

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        window.onload = function () {

            var eleNode = document.getElementsByTagName("img")[0];

            //屬性、賦值獲取兩種方式
            //1.元素節點.屬性或者元素節點[屬性]
            eleNode.src = "image/jd2.png";
            eleNode.aaa = "bbb";
            console.log(eleNode.aaa);
            console.log(eleNode.src);
            console.log(eleNode.tagName);
            console.log(eleNode["title"]);
            console.log(eleNode["className"]);
            console.log(eleNode["alt"]);

            //2.元素節點.方法();
            console.log(eleNode.getAttribute("id"));
            eleNode.setAttribute("id","你好");
            eleNode.setAttribute("ccc","ddd");

            eleNode.removeAttribute("id");
        }
    </script>
</head>
<body>
<img src="image/jd1.png" class="box" title="圖片" alt="京東狗" id="aaa"/>
</body>
</html>

相關推薦

DOM節點訪問關係操作示例

一.DOM 訪問關係(節點的獲得) 節點的訪問關係,是以屬性的方式存在的。 DOM的節點並不是孤立的,因此可以通過DOM節點之間的相對關係對它們進行訪問。 父節點 ( parentNode ) 呼叫者就是節點。一個節點只有一個父節點。呼叫方式就是節

V-4-3 訪問vCenter操作

vmware vcenter 1.使用普通電腦,在網頁端(瀏覽器)訪問vCenter註意:你應該使用https訪問vCenter的網絡端口9443,格式如下:https://your.vCenter.ip:9443。並且安裝flash插件。如下圖,你的瀏覽器可能出現證書的問題,可以選擇忽略或者信任服務

javascript學習筆記:DOM節點關系和操作

seq 文本節點 文檔 use true 添加節點 check iss pen 0x01:前面的話 DOM可以將任何HTML描繪成一個由多層節點構成的結構。節點分為12種不同類型,每種類型分別表示文檔中不同的信息及標記。每個節點都擁有各自的特點、數據和方法,也與其他節點存在

JQuery應用例項學習 —— 19 JQuery物件DOM物件的關係轉換

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti

JavaScript DOM概述(獲取節點的方法/節點訪問關係/節點建立新增刪除複製/屬性獲取設定刪除)

DOM 概述 document object model 文件物件模型:處理網頁內容的方法和介面 1. 什麼是DOM和節點 - document是文件物件模型的一部分。 - DOM是一個複合的資料型別。 - DOM樹:由節點(Node)組成 - HTML的組

JS 中DOM節點訪問關係

節點的訪問關係,是以屬性的方式存在的。DOM的節點並不是孤立的,因此可以通過DOM節點之間的相對關係對它們進行訪問。 一、關係 1、父節點 parentNode   呼叫者就是節點。一個節點只有一個父節點。呼叫方式:節點.parentNode 2、兄弟節點 nextSib

JavaScriptC#的互操作示例

html 一個 互操作 第一次 demo dem 寫博客 第三方類 第三方 近期,因為項目需要開發PC版本,所以涉及到PC版本開發技術選型的問題。 采用winForm:界面設計太難看了 采用wpf:界面好看,但是內存占用太大了。而且公司WPF技術實力不強 最後,決定采用前端

jQuery DOM節點操作

使用 strong cti html ndt pty index all taf 一、創建節點 var box = $(‘<div id =box>節點</div>‘); //創建一個節點 $(‘body‘).appended(box);     

vue怎麽不通過dom操作獲取dom節點

urn mil tar code class func pla ret 消失 今天寫一個公眾號的項目,寫了一個vue的搜索組件,點擊搜索框時,背景出現一個遮罩,代碼結構如下: template:`<div class="searchBar-div">

DOM節點操作

png 而不是 com func baidu 執行 classname class 技術分享 1、修改 class 屬性要寫成className:因為clas是關鍵字 2、.innerHTML修改標簽中的文字 給頁面添加節點document.createElemen

JQuery---選擇器、DOM節點操作練習

span gif .text ide none tle pre splay body 一、練習一 1、需求效果分析: 2、代碼示例: 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/

JavaScript 操作DOM 節點

cnblogs -1 操作dom -- append com 技術分享 節點 doctype 1、添加DOM節點 <!DOCTYPE html> <html> <head> <meta charset="UTF-8">

jQuery DOM節點操作方法大全

dom jquery 元素操作 append(content | fn):向每個匹配的元素內部追加內容。參考:http://jquery.cuishifeng.cn/append.html例如:向所有段落中追加一些HTML標記。<p>I would like to say: </

js的DOM節點操作:創建 ,插入,刪除,復制,查找節點

con 函數 nts html屬性 追加 clas tracking nodes 末尾 DOM含義:DOM是文檔對象模型(Document Object Model,是基於瀏覽器編程的一套API接口,是W3C出臺的推薦標準。其賦予了JS操作節點的能力。當網頁被加載時,瀏

DOM節點(二):操作節點

strong node remove last rfi pan AR eno urn appendChild() 用於向childNodes列表的末尾添加一個節點。 var returnedNode = someNode.appendChild(newNode);

JS中的DOM— —節點以及操作

win col 常用 一個 var family dom節點 瀏覽器兼容 老版本   DOM操作在JS中可以說是非常常見了吧,很多網頁的小功能的實現,比如一些元素的增刪操作等都可以用JS來實現。那麽在DOM中我們需要知道些什麽才能完成一些功能的實現呢?今天這篇文章就先簡單的

JavaScript基礎及函數,BOM,DOM節點DOM節點操作

需要 兩個 進行 history des s系列 onclick 系統信息 回車 使用js的三種方式 1.直接在HTML標簽中,使用事件屬性,調用js代碼: <button onclick="alert(‘點我呀‘)">點我啊!<tton>

Jquery6 DOM 節點操作

模型 恢復 urn var move image 選擇 class creat 學習要點: 1.創建節點 2.插入節點 3.包裹節點 4.節點操作 DOM 中有一個非常重要的功能,就是節點模型,也就是 DOM 中的“M”。頁面中的元素結構就是通過這種節點模型來互相對應著

JavaScript學習 - 基礎(八) - DOM 節點 添加/刪除/修改/屬性值操作

nts pla 屬性 ssm style attribute The width ace html代碼: <!--添加/刪除/修改 --> <div id="a1"> <button id="a2" onclick="add()"&g

jQuery 操作DOM節點

children end inner put htm 詹姆斯 rip clas function html 內容! <body > <p>你最喜歡的名人是?</p> <ul> <li t