DOM

2019-02-12  本文已影响0人  嘤嘤嘤998
节点

在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:
整个文档是一个文档节点
每个 HTML 元素是元素节点
HTML 元素内的文本是文本节点
每个 HTML 属性是属性节点
注释是注释节点


image.png

<p>Hello world!</p>
文本节点 "Hello world!" 的父节点是 <p> 节点

编程接口

所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性。

DOM常用操作

1. 查找节点

document.getElementById('id属性值');  //返回拥有指定id的第一个对象的引用
document/element.getElementsByClassName('class属性值');
document/element.getElementsByTagName('标签名');
document.getElementsByName('name属性值');

document/element.querySelector('CSS选择器');  //仅返回第一个匹配的元素
document/element.querySelectorAll('CSS选择器');  //返回所有匹配的元素
例如:document.querySelector("#demo");

document.documentElement  //获取页面中的HTML标签
document.body       //获取页面中的BODY标签
document.all['']    //获取页面中的所有元素节点的对象集合型

2. 新建节点

document.createElement('元素名');  //创建新的元素节点

document.createAttribute('属性名');  //创建新的属性节点

document.createTextNode('文本内容');  //创建新的文本节点

document.createComment('注释节点');  //创建新的注释节点
document.createDocumentFragment( );  //创建文档片段节点

3. 添加新节点

parent.appendChild( element/txt/comment/fragment );  //向父节点的最后一个子节点后追加新节点

parent.insertBefore( newChild, existingChild );  //向父节点的某个特定子节点之前插入新节点

element.setAttributeNode( attributeName );  //给元素增加属性节点

element.setAttribute( attributeName, attributeValue );  //给元素增加指定属性,并设定属性值

4. 删除节点

parentNode.removeChild( existingChild );  //删除已有的子节点,返回值为删除节点
element.removeAttribute('属性名');  //删除具有指定属性名称的属性,无返回值
element.removeAttributeNode( attrNode );  //删除指定属性,返回值为删除的属性 

5. 修改节点

parentNode.replaceChild( newChild, existingChild );  //用新节点替换父节点中已有的子节点

element.setAttributeNode( attributeName );  //若原元素已有该节点,此操作能达到修改该属性名的目的

element.setAttribute( attributeName, attributeValue );  //若原元素已有该节点,此操作能达到修改该属性值的目的
//element.setAttributeNode( attributeName );实例:
<body>
    <p class="classValue">增添id属性,并修改class属性值</p>
    <script>
        var element = document.getElementsByTagName('p')[0];

        // 添加属性节点
        var attr = document.createAttribute('id'); 
        attr.value = 'idValue';
        element.setAttributeNode(attr); 

        // 修改属性值
        var attr = document.createAttribute('class'); 
        attr.value = 'classNewValue';
        element.setAttributeNode(attr);     
    </script>
</body>
//element.setAttribute( attributeName, attributeValue ); 实例:
<body>
    <p class="classValue">增添id属性,并修改class属性值</p>
    <script>
        var element = document.getElementsByTagName('p')[0];
        element.setAttribute('id','idValue'); //添加属性节点
        element.setAttribute('class','classNewValue');//修改属性值
    </script>
</body>
添加文本节点,有两种常见方法:
  1. document.createTextNode('新增文本内容');
function addText(){
            var element = document.getElementsByTagName('p')[0];
            var txt = document.createTextNode('新增文本内容'); //创建文本节点
            element.appendChild(txt); //添加文本节点
        }
  1. element.innerHTML='新增文本内容'; 【推荐】
 function addText(){
            var element = document.getElementsByTagName('p')[0];
            element.innerHTML='新增文本内容'; //插入文本内容
        }
上一篇下一篇

猜你喜欢

热点阅读