DOM 基础知识 及一些小题

  • document :整个文档

  • HTML : 文档里面的根标签

  • getElementById() :元素id在ie8以下的浏览器,不区分大小写,而且没有id时,name等同于id

  • getElementTagname() : 生成的是数组,不能用push!

  • getElementByname(): name数据名,理论上只有部分标签才可以生效(form,input,img,iframe)

  • getElementClassname() : IE8以下没有

CSS选择器:

  • query Selector() ; 一个
  • query selectorAll() ; 一组
    在ie7和ie7以下的版本没有,都是document打点调用,静态的,非实时的

节点属性:

  1. nodetype : 该属性标签节点的类型
  2. nodename: 该属性标签节点的名称
  3. nodeValue:该属性标记节点的值
  4. attributes :Element 节点属性的集合
  5. ele.setAttributes --设置行间属性 p(“class”,demo)P的class为demo
  6. ele.getAttributes–获取行间属性p(“id”,demo) P的id为demo
  7. node.haschildNodes–节点的一个方法,获取子节点

节点类型

  • 元素节点—1
  • 属性节点—2
  • 文本节点–3
  • 注释节点—8
  • 文档节点/document----9
  • documentFragment----11

节点树

  • parentNode :父节点(所有的)
  • childNodes:子节点(所有的)
  • firstchild:第一个子节点
  • lastchild:最后一个子节点
  • nextSibling:后一个兄弟
  • previousSibling:前一个兄弟

parentNode==parentElement(IE不兼容)

增:

  • document.createElement();元素节点
  • document.createTextNode();文本节点
  • document.createcomment();
  • document.createDocumentFragment();

插:

  • parentNode appendChild();
  • parentNode insertBefore();

删:

  • parent.removeChild();
  • Child.remove(); 自杀

替换:

  • parent.replace(newchild,oldchild);
    举例1:
<body>
    <p>题目二:自己封装hasChildren()方法,不可用children属性</p>

举例2:

     <!-- <P> 题目三:找第n个兄弟节点
        封装函数,返回元素e的第n个兄弟节点,
        n为正,返回后面的兄弟节点,
        n为负,返回前面的,
        n为0,返回自己</P>
        <P>兼容性写法和正常</P> -->
        
 比如:
<div>
    <i></i>
    <p></p>
    <b></b>
    <strong></strong>
    <div></div>
</div>

举例1答案:
<script>
        function son(e) {

            var child = e.childNodes;
            var len = child.length;
            for (var i = 0; i < len; i++) {
                if (child.nodeType == 1) {
                    return true;
                } else {
                    return false;
                }
            }
        }

    </script>

举例3:

 <!-- <p>封装函数,返回元素e的第n层祖先元素节点</p> -->
 
 比如:
    <div><strong><span><b><i></i></b></span></strong></div>
    举例2:
 function back(e,n){
    while(e&&n){
        if(n>0){
                if(e.nextElementSibling){
                    e=e.nextElementSibling;
                }
                else{
                 for(e=nextSibling;e && e.nodeType !=1;e=e.nextSibling);
                    }
                n--;
            } else if(n<0){

                if(e.previousElementSibling){
                   e=e.previousElementSibling
                }
                else {
                    for(e=previousSibling; e&&e.nodeType !=1;e=e.previousSibling);
                }
                n++;
            }  
        }
     
        return e;
}
var b=document.getElementsByTagName("b")[0];
back(b,-1);
</script>
      

举例4:


<!-- <body>
    <p>
        封装mychildren功能,解决以前部分浏览器兼容问题
    </p> -->
    <div><i></i> <strong><span><b><i></i></b></span></strong></div>


举例3:
 <script>
            //  此时n是循环次数,2就是循环2次,3就是三次
         var i=document.getElementsByTagName('i')[0];
            function retparent(e,n){
           while(e&&n){
               e=e.parentElement;
               n--;             
                }
            return e;
            }
         console.log(retparent(i,10));
    </script>
 

举例4答案:

<script>
       var div=document.getElementsByTagName("div")[0];
        
        Element.prototype.myChildren=function(){

            var child=this.childNodes;
            var len=child.length;
            var arr=[];
            
            for(var i=0;i<len;i++){
                if(child[i].nodeType===1){
                    arr.push(child[i]);
                }           
             }
            return arr;
        }  
       console.log(div.myChildren());
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值