jsday14

作者: 相信自己_胡 | 来源:发表于2017-12-11 21:04 被阅读0次

    DOW 文档对象

     console.log(document);//文档节点。
        // console.dir(document);//文档节点。
        //通过id获取元素节点。
        // console.log(document.getElementById("box").title);//只有document能够调用
        //通过标签名获取元素节点.返回值为数组
    //    console.log(document.getElementsByTagName("div"));//document和元素节点都能够调用
        //通过class属性获取的元素节点.返回值为数组.IE5678不支持。
        // console.log(document.getElementsByClassName("box"));//document和元素节点都能够调用
    整个文档是一个文档节点
            每个 HTML 元素是元素节点
            HTML 元素内的文本是文本节点
            每个 HTML 属性是属性节点
            注释是注释节点
    

    1.API 文档接口

    结点

    1.nodeType 节点类型

                   1) 元素节点  <==>   1  
                    2) 属性节点  <==>   2
                    3) 文本节点  <==>   3
             共十二个节点类型(一到十二表示)
                  子节点 集合
                    box.childNodes
                    box.children
                    第一个子节点 , 最后一个子节点
                    firstChild     lastChild
    
    看浏览器是否兼容
    
     //父节点
        // var box2 = document.getElementById("box2");
        // console.log(box2.parentNode);
        //兄弟节点
        //box2.nextElementSibling  || box2.nextSibling;  //下一个兄弟
        //box2.previousElementSibling || box2.previousSibling //前一个兄弟
        //子节点
        //box2.firstElementchild  || box2.firstChild;  //第一个
        //box2.lastElementchild || box2.flastChild      //最后一个
        //所有子节点
        // childNodes // children;
    

    结点方法

    创建节点
              var liNew = document.createElement("li")
              liNew.innerHTML = "<a href='###'>haohao</a>"
    
        // 添加节点  
        // 父节点 .appendChild(子节点)
        // 在尾部添加
       获取结点
       getAttribute
         属性结点
         Attribute
    
        // document.body.appendChild(li);
    
        // insertBefore() 方法可在已有的子节点前插入一个新的子节点。(新节点,老节点)
        // ul.insertBefore(liNew,liOld)
    
        // 删除节点   父节点 .removeChild(子节点)
                 // ul.removeChild(ul.firstElementChild);
        // 克隆节点
            // var a = li.cloneNode()
            // ul.appendChild(a)
    

    结点属性方法

     var div = document.getElementById("d")
        /*获取属性*/   
        // console.log(div.getAttribute("class"))
    
        /*设置属性*/
        // div.setAttribute("style","background:red")
        // div.setAttribute("id","dd")
        // div.setAttribute("class","dd")
        // div.setAttribute("onclick","dd")
    
        /*删除属性*/
        // div.removeAttribute("id")
        // div.removeAttribute("class")
    

    事件绑定

    addEventListener(事件,函数)
    

    表格

     var arr = ["姓名","年龄","操作"]
        var arr1 = []
        var tab = document.createElement("table")
        tab.border = "1px"
        // tab.setAttribute()
        document.body.appendChild(tab)
    
        for(var i = 0;i<1;i++){
             var tr = document.createElement("tr")
             tr.height = "30px"
             for(var j =0;j<arr.length;j++){
                var th = document.createElement("th")
                th.innerHTML = arr[j]
                tr.appendChild(th)
           }
              tab.appendChild(tr)
        }
    
    
        // 创建行
        for(var i = 0;i<arr1.length;i++){
    
           var tr = document.createElement("tr")
            tr.setAttribute("onmouseover","fun2(this)")
           tr.height = "30px"
            if(i%2===0){
                tr.setAttribute("style","background:yellow")
            }
               for(var j =0;j<2;j++){
                var td = document.createElement("td")
                td.setAttribute("onclick","fun(this)")
               
                // td.setAttribute("contenteditable","true")
                td.innerHTML = arr1[i][j] 
                tr.appendChild(td)
               }
           // 创建按钮
            var btn = document.createElement("button")
            btn.innerHTML = "删除";
            // btn.setAttribute("onclick","del(this)")
            tr.appendChild(btn);
            tab.appendChild(tr)
    
        }
    
        function del(a){
            console.log(a.parentNode.parentNode)
             tab.removeChild(a.parentNode);
        }
         var input = document.createElement("input");
    
         function fun(a){
            input.value=a.innerText;        
            a.innerHTML = "";
            a.appendChild(input);
            input.focus();
            input.setAttribute("onblur","fun1(this)")
            console.log(a)
        }
    
    
        function fun1(a){
           a.parentNode.innerHTML = a.value
        }
        function fun2(a){
           a.style.background = bgColor()
        }
    
        function bgColor(){
    
            var str = "#";
            for(var i =0;i<6;i++){
                str+=Math.round(Math.random()*15).toString(16);
            }
            return str
        }
    

    insertAfter

     // Dom 里没有这个insertAfter  没有这个方法
        function insertAfter(NewNode,TargetNode){
    
            var par = TargetNode.parentNode;
            // 如果最后的节点是目标就直接添加
            if(par.lastElementChild == TargetNode){
                par.appendChild(NewNode)
            }else{
                // 如果不是 就插入在 目标元素在下一个节点在前面(TargetNode)
                par.insertBefore(NewNode,TargetNode.nextElementSibling)
            }
    

    相关文章

      网友评论

          本文标题:jsday14

          本文链接:https://www.haomeiwen.com/subject/lmewixtx.html