• 原生js操作dom备忘


        <!DOCTYPE html>
        <html lang="zh-CN">
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
            <title></title>
        </head>
        <body lang="en-us">
        <p><span class="className">1</span><i>2</i></p>
        <div></div>
        </body>
        <script>
    
        /*-----------------------------------属性-----------------------------------*/
    
        //childNodes -当前节点的全部子级节点(有的浏览器里会把元素里的空白节点转换成文本节点 nodeType==3)
        var nodes=document.getElementsByTagName('p')[0].childNodes;
        for(var i=0;i<nodes.length;i++){
            /*
            * <span>1</span>
            * <i>2</i>
            * */
            console.info(nodes[i]);
        }
    
        var childNodes=document.getElementsByTagName('p')[0];
        //firstChild -childNodes里的第一个节点 相当于childNodes[0]  *所有主流浏览器都支持 firstChild 属性。
        //lastChild -childNodes里的最后一个节点 相当于childNodes[childNodes.length-1]
        /*
        * <span>1</span>
        * <i>2</i>
        * */
        console.info(childNodes.firstChild);
        console.info(childNodes.lastChild);
    
        //parentNode -父节点 如果指定节点没有父节点,则返回 null。
        /*
        *<p></p>
        * */
        console.info(childNodes.lastChild.parentNode);
    
        //nextSibling previousSibling -兄弟节点 如果没有 nextSibling previousSibling节点,则返回值为 null
        /*
        *<span>1</span>
        *<i>2</i>
        * */
        console.info(childNodes.lastChild.previousSibling);
        console.info(childNodes.firstChild.nextSibling);
    
        //nodeValue -返回元素节点里的值 注意:文本始终位于文本节点中
        /*
        *1
        * */
        console.info(childNodes.firstChild.childNodes[0].nodeValue);
    
        //nodeName -返回元素节点名称时,并不包含html里的<>符号
        /*
        * #text
        * SPAN
        * */
        console.info(childNodes.firstChild.childNodes[0].nodeName);
        console.info(childNodes.firstChild.nodeName);
    
        //tagName -返回元素的标签名
        /*
         *undefined
         * SPAN
         * */
        console.info(childNodes.firstChild.childNodes[0].tagName);
        console.info(childNodes.firstChild.tagName);
    
        //className -属性设置或返回元素的 class 属性
        /*
        *className
        * */
        console.info(childNodes.firstChild.className);
    
        // id -设置或返回元素的 id
        childNodes.firstChild.id='hello';
        console.info(childNodes.firstChild.id);
    
        //innerHTML -设置或返回元素的 inner HTML
    
        //lang -设置或返回元素的语言代码
        console.info(document.getElementsByTagName('body')[0].lang);
    
        //title -设置或返回元素的标题
    
        //textContent -返回所有子及后代节点的文本
        console.info(document.getElementsByTagName('body')[0].textContent);
    
        //ownerDocument -以 Document 对象的形式返回节点的 owner document
        console.info(document.getElementsByTagName('body')[0].ownerDocument);
    
        /*-----------------------------------方法-----------------------------------*/
    
        //appendChild() -向节点添加最后一个子节点  也可以使用 appendChild() 方法从一个元素向另一个元素中移动元素
        var p=document.getElementsByTagName('p')[0];
        var textNode=document.createTextNode('world!');
        var newElementNode=document.createElement('b');
        newElementNode.appendChild(textNode);//添加元素
        p.appendChild(newElementNode);//添加元素
        var div=document.getElementsByTagName('div')[0];
        div.appendChild(p);//移动元素
    
        //cloneNode -克隆元素 创建节点的拷贝,并返回该副本
        var cloneNode=div.cloneNode(true);//克隆所有后代,参数设置为true
        document.getElementsByTagName('body')[0].appendChild(cloneNode);
    
        //insertBefore -在指定的已有子节点之前插入新的子节点
        var listNode=document.createElement('ul');
        var liNode=document.createElement('li');
        listNode.appendChild(liNode);
        var body=document.getElementsByTagName('body')[0];
        body.appendChild(listNode);
        var textNode=document.createTextNode('haha!');
        body.insertBefore(textNode,listNode);
    
        //removeChild -从元素中移除子节点 返回值是对删除节点的引用
        /*
        * "haha"
        * */
        var delNode=textNode.parentNode.removeChild(textNode);
        console.info(delNode);
    
        //replaceChild -用新节点替换某个子节点
        var newNode=document.createTextNode('hehe!');
        var oldNode=document.getElementsByTagName('p')[0].childNodes[0];
        oldNode.parentNode.replaceChild(newNode,oldNode);
    
        //setAttribute getAttribute -设置和返回指定属性名的属性值
        var div2=document.getElementsByTagName('div')[0];
        div2.setAttribute('data-id','71121');
        console.info(div2.getAttribute('data-id'));//71121
    
        //normalize -移除空的文本节点,并连接相邻的文本节点
        function addTextNode(){
            var text=document.createTextNode('文本节点内容');
            div2.appendChild(text);
        }
        addTextNode();
        addTextNode();
        console.info(div2.childNodes.length);
        div2.normalize();
        console.info(div2.childNodes.length);
  • 相关阅读:
    19. 删除链表的倒数第 N 个结点
    相交链表
    环形链表2
    环形链表
    K8s 网络通讯
    Hutool-二维码生成
    Hutool-加解密
    Hutool-解析JSON
    Hutool-读取配置文件中的配置
    Hutool-操作图片
  • 原文地址:https://www.cnblogs.com/leyi/p/6209281.html
Copyright © 2020-2023  润新知