web

01-DOM(节点内容操作)

2019-02-12  本文已影响6人  Viarotel

DOM操作一

HTML DOM是HTML Document Object Model(文档对象模型)的缩写

HTML DOM则是专门适用于HTML/XHTML的文档对象模型。

熟悉软件开发的人员可以将HTML DOM理解为网页的API。

它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言(js)获取或者编辑。

例如Javascript就可以利用HTML DOM动态地修改网页。

事件

事件源、事件、事件驱动程序。

事件源 :要触发的对象 (一般是名词,事件发起者,比如开关按钮)

事件:怎么触发这个事情 (一般是动词,触发事件,比如点击开关)

事件处理程序:发生了什么事情 (处理结果,比如灯亮了)

js做什么:获取事件源、绑定事件、书写事件驱动程序

常用事件:

DOM

dom元素指的是页面的标签,

通过任意一个dom元素的关系可以找到当前页面其他任意的一个dom.

DOM的获得

ID选择器

标签选择器

class选择器

NODE节点

node节点指的是页面的任意元素,

标签 换行符 注释 空格 属性 标签内容等都可以被当做node节点,

当然既然是节点,也是可以被js选中的,因此可以通过DOM节点之间的相对关系对它们进行访问。

node节点的访问关系

parentNode 父节点

调用者就是节点,一个节点只有一个父节点。

调用方式就是节点.parentNode.

兄弟节点

调用者是节点。(存在浏览器兼容问题)

IE678中指下一个(上一个)元素节点(甚至包括标签、注释)。

在火狐谷歌IE9+(标准)以后都指的是下一个(上一个)节点(包括空文档和换行节点)。

nextSibling 下一个元素节点

previousSibling 上一个元素节点

子节点

单个子节点

firstChild: 调用者是父节点。
lastChild: 调用者是父节点。

所有子节点

childNodes: 调用者是父节点。

区分不同类型的节点

nodeType:

处理兼容问题:

// 封装好的兼容ie8和标准浏览器的获取孩子节点的方法
function myChildren(node){
    var myChildrenArr = [] ;
    var childrenArr = node.children; //拿到的是node的所有的孩子节点,包括ie中的注释节点
    for(var n in childrenArr){
        if(childrenArr[n].nodeType == 1){   //选择出所有的标签节点
            myChildrenArr.push(childrenArr[n]);
        }
    }
    return myChildrenArr;
}   

DOM节点操作:

增删改查 CURD create update read delete

创建节点

createElement()

插入节点

appendChild()

insertBefore()

删除节点

removeChild()

克隆节点

cloneNode(true)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div class="box">
        
    </div>
    <button class="btn">删除img2图片</button>
    <button class="btn2">clone box</button>
    <script>
        var boxDiv = document.getElementsByClassName('box')[0];
        var btn = document.getElementsByClassName('btn')[0];
        var btn2 = document.getElementsByClassName('btn2')[0];
        //创建一个p标签
        // 创建完了需要插入
        var pEle = document.createElement('p');
        pEle.innerText = '欢迎来到不凡学院';
        var img = document.createElement('img');
        var img2 = document.createElement('img');
        img.src = 'img/fbb.jpg';
        img2.src = 'img/fbb.jpg';
        // 通过父节点插入子节点
        boxDiv.appendChild(pEle);
        boxDiv.appendChild(img);
        // 同一个对象不能重复插入
        // 将img2插入到pEle前面
        boxDiv.insertBefore(img2,pEle);
        btn.onclick = function(){
            // 父节点.removeChild(子节点)。
            // boxDiv.removeChild(img2);
            // node.parentNode.removeChild(node)
            img2.parentNode.removeChild(img2);
        }
        btn2.onclick = function(){
            var scriptEle = document.getElementsByTagName('script')[0];
            //克隆标签节点 如果没有传递true则为浅克隆.
            var newBox = boxDiv.cloneNode(true);
            //单clone不插入是没有效果的
            //document.body ==> 获取body对象
            // document.body.appendChild(newBox);
            document.body.insertBefore(newBox,scriptEle);
        }

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

节点属性

获取调用它的元素的某个属性的值

getAttribute()

设置调用它的元素的某个属性的值

setAttribute()

删除调用它的元素的某个属性的值

removeAttribute()

内容操作

设置输入框的初始值

.value

在节点中添加文本

.innerText

在节点中添加HTML代码

.innerHTML

上一篇下一篇

猜你喜欢

热点阅读