zoukankan      html  css  js  c++  java
  • js基础之DOM

    一、创建子节点

    发帖在顶部显示:

    var oBtn = document.getElementById('btn1');
    var oUl = document.getElementById('ul1');

    oBtn.onclick=function(){
      var oLi = document.createElement('li');
      var lil = document.getElementsByTagName('li');
      var otxt = document.getElementById('txt1');
      oLi.innerHTML=otxt.value;
      if(lil.length==0){
        oUl.appendChild(oLi);
      } else {
        //父节点.insertBefore(子节点,位置)
        oUl.insertBefore(oLi,lil[0]);//插入到某个子节点的前面
      }
    }

    二、删除子节点

    var oA = document.getElementsByTagName('a');
    var oUl = document.getElementById('ul1');
    for(var i=0;i<oA.length;i++){
      oA[i].onclick=function(){
      oUl.removeChild(this.parentNode);
      }
    }

    三、遍历子节点

    childNodes 属性可返回指定节点的子节点的节点列表。包括HTML节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点
    var oUl = document.getElementById('ul1');
    for(var i=0;i<oUl.childNodes.length;i++){
      if(oUl.childNodes[i].nodeType==1){
        oUl.childNodes[i].style.background='red';
      }
    }
    注意:
    childNodes属性返回的子节点中,包含了文本节点与元素节点。如果只希望遍历元素节点,建议使用children属性则更为直接方便!

    parentNode:

    var oA = document.getElementsByTagName('a');
    for(var i=0;i<oA.length;i++){
      oA[i].onclick=function(){
        this.style.display='none';
        this.parentNode.style.display='none';//alert();
      }
    }

    offsetParent;

    <div id="div1" style="100px;height:100px; background:red; margin:100px; position:absolute;">
    <div id="div2" onClick="alert(this.offsetParent.id)" style="100px;height:100px; background:yellow; position:absolute;left:100px;top:100px;"></div>
    </div>

     四、用class选元素

    原代码:

    var oUl=document.getElementById('ul1');
    var aLi=oUl.getElementsByTagName('li');
     var i=0;
    for(i=0;i<aLi.length;i++)
    {
      if(aLi[i].className=='box')
      {
        aLi[i].style.background='red';
      }
    }

    封装后的代码:

    function getByClass(oParent, sClass)
    {
      var aEle=oParent.getElementsByTagName('*');
      var aResult=[];
      var i=0;
      for(i=0;i<aEle.length;i++)
      {
        if(aEle[i].className==sClass)
        {
          aResult.push(aEle[i]);
        }
      }

      return aResult;
    }

    window.onload=function ()
    {
    var oUl=document.getElementById('ul1');
    var aBox=getByClass(oUl, 'box');
     var i=0;
    for(i=0;i<aBox.length;i++)
    {
      aBox[i].style.background='yellow';
    }
    }


    作者:狂流
    出处:http://www.cnblogs.com/kuangliu/
    欢迎转载,分享快乐! 如果觉得这篇文章对你有用,请抖抖小手,推荐一下!

  • 相关阅读:
    BZOJ.1028.[JSOI2007]麻将(贪心)
    BZOJ.1024.[SCOI2009]生日快乐(记忆化搜索)
    BZOJ.1023.[SHOI2008]cactus仙人掌图(DP)
    BZOJ.1026.[SCOI2009]windy数(数位DP)
    BZOJ.2125.最短路(仙人掌 最短路Dijkstra)
    BZOJ.1021.[SHOI2008]循环的债务(DP)
    BZOJ.1019.[SHOI2008]汉诺塔(递推)
    POJ.1379.Run Away(模拟退火)
    BZOJ.3680.吊打XXX(模拟退火/爬山算法)
    BZOJ.1018.[SHOI2008]堵塞的交通(线段树维护连通性)
  • 原文地址:https://www.cnblogs.com/kuangliu/p/3474522.html
Copyright © 2011-2022 走看看