DOM操作以及其它案例总结

This is my first blog,

        DOM全称就是Document Object Model(文档对象模型)。

        DOM应用方法以及操作:

       1、创建DOM元素

createElement(标签名)  创建一个节点

appendChild(节点)  追加一个节点

例子:为ul插入li

  <!DOCTYPE HTML>
  <html>
  <head>
  <meta charset="utf-8">
  <title>无标题文档</title>
  <script>
  window.οnlοad=function ()
  {
          var oBtn=document.getElementById('btn1');
        var oUl=document.getElementById('ul1');
        
        oBtn.οnclick=function ()
        {
               var oLi=document.createElement('li');
               
               //父级.appendChild(子节点);
               oUl.appendChild(oLi);
        };
};
</script>
</head>
 
<body>
<input id="btn1" type="button" value="创建li"/>
<ul id="ul1">
</ul>
</body>
</html>

想节点有值:加一个文本表单

  <!DOCTYPE HTML>
  <html>
  <head>
  <meta charset="utf-8">
  <title>无标题文档</title>
  <script>
  window.οnlοad=function ()
  {
          var oBtn=document.getElementById('btn1');
        var oUl=document.getElementById('ul1');
        var oTxt=document.getElementById('txt1');
        
        oBtn.οnclick=function ()
        {
               var oLi=document.createElement('li');
               
               oLi.innerHTML=oTxt.value;
               
               //父级.appendChild(子节点);
               oUl.appendChild(oLi);
        };
};
</script>
</head>
 
<body>
<input id="txt1" type="text"/>
<input id="btn1" type="button" value="创建li"/>
<ul id="ul1">
</ul>
</body>
</html>

2、插入DOM元素

 insertBefore(节点,原有节点) 在已有元素前插入

 例子:倒序插入li

  <!DOCTYPE HTML>
  <html>
  <head>
  <meta charset="utf-8">
  <title>无标题文档</title>
  <script>
  window.οnlοad=function ()
  {
          var oBtn=document.getElementById('btn1');
        var oUl=document.getElementById('ul1');
        var oTxt=document.getElementById('txt1');
        
        oBtn.οnclick=function ()
        {
               var oLi=document.createElement('li');
               var aLi=oUl.getElementsByTagName('li');
               
               oLi.innerHTML=oTxt.value;
               
               //父级.appendChild(子节点);
               //oUl.appendChild(oLi);
               if(aLi.length>0)
               {
                       oUl.insertBefore(oLi, aLi[0]);
               }
               else
               {
                       oUl.appendChild(oLi);
               }
        };
};
</script>
</head>
 
<body>
<input id="txt1" type="text"/>
<input id="btn1" type="button" value="创建li"/>
<ul id="ul1">
</ul>
</body>
</html>
3删除DOM元素

 removeChild(节点) 删除一个节点

 例子:删除li

  <!DOCTYPE HTML>
  <html>
  <head>
  <meta charset="utf-8">
  <title>无标题文档</title>
  <script>
  window.οnlοad=function ()
  {
          var aA=document.getElementsByTagName('a');
        var oUl=document.getElementById('ul1');
        
        for(var i=0;i<aA.length;i++)
        {
               aA[i].οnclick=function ()
               {
                       oUl.removeChild(this.parentNode);
               };
        }
};
</script>
</head>
 
<body>
<ul id="ul1">
        <li>asfasd <a href="javascript:;">删除</a></li>
        <li>5645 <a href="javascript:;">删除</a></li>
        <li>ghdfjgj <a href="javascript:;">删除</a></li>
        <li>mvbnmvnb <a href="javascript:;">删除</a></li>
</ul>
</body>
</html>
4、文档碎片:类似一个临时的文档,要所有要加的dom元素先放在这里,达到不要每次操作dom元素提高页面效率

 文档碎片可以提高DOM操作性能(理论上)

 文档碎片原理

 document.createDocumentFragment()

没有使用文档碎片之前:

  <!DOCTYPE HTML>
  <html>
  <head>
  <meta charset="utf-8">
  <title>无标题文档</title>
  <script>
  window.οnlοad=function ()
  {
          var oUl=document.getElementById('ul1');
        
        for(var i=0;i<10000;i++)
        {
               var oLi=document.createElement('li');
               
               oUl.appendChild(oLi);
        }
};
</script>
</head>
 
<body>
<ul id="ul1">
</ul>
</body>
</html>

加入文档碎片:

  <!DOCTYPE HTML>
  <html>
  <head>
  <meta charset="utf-8">
  <title>无标题文档</title>
  <script>
  window.οnlοad=function ()
  {
          var oUl=document.getElementById('ul1');
        var oFrag=document.createDocumentFragment();
        
        for(var i=0;i<10000;i++)
        {
               var oLi=document.createElement('li');
               
               oFrag.appendChild(oLi);
        }
        
        oUl.appendChild(oFrag);
};
</script>
</head>
 
<body>
<ul id="ul1">
</ul>
</body>
</html>

其实真实工作,这个文档碎片效果不大,因为很少插入很多标签。高级的浏览器也性能很好。下面有个测试性能的代码,大家感兴趣可以测试一下时间。主要是针对面试的时候,大家了解即可。

  var d1 = new Date();
      //创建十个段落,常规的方式
      for(var i = 0 ; i < 1000; i ++) {
          var p = document.createElement("p");
          var oTxt = document.createTextNode("段落" + i);
          p.appendChild (oTxt);
          document.body.appendChild(p);
      }
      var d2 = new Date();
    document.write("第一次创建需要的时间:"+(d2.getTime()-d1.getTime()));
 
 
    //使用了createDocumentFragment()的程序
    var d3 = new Date();
    var pFragment = document.createDocumentFragment();
    for(var i = 0 ; i < 1000; i ++) {
        var p = document.createElement("p");
        var oTxt = document.createTextNode("段落" + i);
        p.appendChild(oTxt);
        pFragment.appendChild(p);
    }
    document.body.appendChild(pFragment);
    var d4 = new Date();
    document.write("第2次创建需要的时间:"+(d4.getTime()-d3.getTime()));
                            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值