zoukankan      html  css  js  c++  java
  • DOM基础操作实战代码

    对于已经讲解给大家的DOM实战,我今天给大家几个实战代码,可以让大家加深对此的理解!

    1.用DOM动态生成这样一个结构:

    1 <div class=”example”>
    2 
    3       <p class=”slogan”>HelloWorld</p>
    4 
    5 </div>

    我认为中规中矩的写法是这个样子的:

    1   var div = document.createElement(‘div’),
    2   p = document.createElement(‘p’),
    3   text = document.create(‘HelloWorld’);
    4   div.setAttribute(‘class’, ‘example’);
    5   p.setAttribute(‘class’, ‘slogan’);
    6   p.appendChild(text);
    7   div.appendChild(p);
    8   document.body.append(div);    
    JavaScript; “复制代码”); “查看纯文本代码”); “返回代码高亮”)

    • 不过这里有点小提示,节点的className属性可以读写操作class

    因此这里我们为标签赋类名的值的时候可以不用setAttribute,可以直接用className。


     1 div.className = ‘example’; 2 p.className = ‘slogan’;  
    JavaScript; “复制代码”); “查看纯文本代码”); “返回代码高亮”)

    不过,还有一个最取巧的办法,那就是直接用innerHTML。


     1 div.innerHTML = <p class=“slogan”>HelloWorld</p> 
    JavaScript; “复制代码”); “查看纯文本代码”); “返回代码高亮”)

    2.封装函数InsertAfter();功能类似insertBefore,直接在原型链上编程,可以忽略老版本的浏览器。

    代码:

    
    
    1   Element.insertAfter = function (targetNode, afterNode) {
    2         var nextSib = after.nextElementSibling;
    3         if(this.children.length <= 1 || !nextSib) {
    4               this.appendChild(targetNode);
    5         }else {
    6               this.insertBefore(targetNode, nextSibling);
    7         }
    8   }  
    JavaScript; “复制代码”); “查看纯文本代码”); “返回代码高亮”)

    这里是利用了原生的insertBefore方法,我们检测当只有一个子元素或者我们要找的元素就是最后一个,那么直接调用appendChild方法就可以,否则就找到要找的元素的下一个,然后把它的下一个元素当做insert的元素调用insertBefore方法就可以了。

    3.封装remove()函数,使得child.remove()可以销毁自身

    看题目的要求就是要在原型链上编程。

    代码:

    1   Element.prototype.remove = function () {
    2         var parent = this.parentNode;
    3         parent.removeChild(this);
    4   }   
    JavaScript; “复制代码”); “查看纯文本代码”); “返回代码高亮”)

    这个问题的代码其实很简单,只要找到这个元素的父级,然后让父级删除掉这个元素就可以了。

    4.将目标节点内部的节点顺序逆序。

    eg: <div><p></p><a></a></div>    —>

    <div><a></a><p></p></div>

    对于这个题目,我的做法是利用我们插入的元素如果是本身就存在的,那么就会剪切到新的位置上这个特性来做的。

    代码:

    
    
      Element.prototype.reverseElement = function(){
            var len = this.childNodes.length,
                  child,
                  first = this.firstChild;
            for (var i = 0; i < len - 1; i++){
                  child = this.lastChild;
                  this.insertBefore(child, first);
            }
      }
    JavaScript; “复制代码”); “查看纯文本代码”); “返回代码高亮”)
  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/pandawind/p/10014742.html
Copyright © 2011-2022 走看看