dom选择器,节点类型

查看元素节点

  • document代表整个文档
  • document.getElementByID()//元素id在ie8一下的浏览器,不区分id大小写,而且也返回匹配name属性的元素(name = id)
  • getElementsByTagName() // 标签名
    <div id = "only">123</div>
    var div = document. getElementsByTagName('div');
    把页面里面的所有div都拿出来,放到一个类数组里,代表一个数组,所以div.style.background = "red"就会报错 为了不报错 把这个div取出来 得这样 document. getElementsByTagName('div')[0];
    尽管页面只有一个div,但选出来的永远是一组 所以要加角标
  • getElementsByName();//, 需注意 只有部分标签可生效(表单,表单元素,img,ifame)
  • getElementsByClassName();//类名 ie8和ie8一下没有
  • querySelector()// css选择器 在ie7和ie7以下得版本中没有
  • querySelectorAll()// css选择器 在ie7和ie7以下得版本中没有

遍历节点树

  • parentNode 父节点(最顶端的parentNode为#document);
  • childNodes 子节点们
  • firstChild 第一个子节点
  • lastChild 最后一个子节点
  • nextSibling 后一个兄弟节点previousSibling前一个兄弟节点

节点的主要类型:
元素节点 --1
属性节点 --2
文本节点 -- 3
注释节点 --8
document --9
DocumentFragment -- 11

<div>
     <strong>
               <span>1</span>
     </strong>
     <span></span>
     <em></em>
</div>
div.childNodes.length  -->7  
div和strong之间算1一个文本节点   strong算元素节点
<div>
       123
      <! -- this is comment-->  
     <strong></strong>
     <span></span>
</div>
也是七个节点

基于元素节点数的遍历

  • parentElement 返回当前元素的父元素节点(ie不兼容)
  • children 只返回当前元素的元素子节点
  • nodechildElementCount === node.children.length当前元素节点的子元素个数
  • firstElementChild 返回的是第一个元素节点
    -lastElementChild 返回的是最后一个元素节点
  • nextElementSibling/previousElementSibling 返回的是后一个/前一个兄弟元素节点

节点的四个属性

  • nodeName
    元素的标签名,以大写形式表示,只读
  • nodeValue
    Text节点或Comment节点的文本内容,可读写
  • nodeType
    该节点的类型,只读
  • attributes
    Element节点的属性集合
    节点的一个方法 Node.hasChildNodes();
<div>
    123
        <!--    this is comment -->
      <strong> </strong>
      <span></span>
      <em></em>
      <i></i>
      <b></b>
</div>
<script type="text/javascript">
    var div = document.getElementsByTagName('div')[0];
    function retElementChild(node){
        var arr = [],
            child = node.childNodes,
            len = child.length;
        for (var i = 0; i < len; i++) {
            if(child[i].nodeType === 1){
                arr.push(child[i]);
            }
        }
        return arr;

    }
   console.log(retElementChild(div));
</script>

---------------------------------------------


<div>
    123
        <!--    this is comment -->
      <strong> </strong>
      <span></span>
      <em></em>
      <i></i>
      <b></b>
</div>
<script type="text/javascript">
    var div = document.getElementsByTagName('div')[0];
    function retElementChild(node){
        var temp = {
              length : 0,
              push : Array.prototype.push
              splice : Array.prototype.splice
        },
            child = node.childNodes,
            len = child.length;
        for (var i = 0; i < len; i++) {
            if(child[i].nodeType === 1){
                temp.push(child[i]);
            }
        }
        return temp;

    }
   console.log(retElementChild(div));
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 3,690评论 0 7
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,670评论 1 45
  • 参考书:《JavaScript高级程序设计》 知识点前提:什么是节点 Node类型 DOM1级定义了一个Node接...
    DHFE阅读 420评论 0 0
  • 节点层次 DOM 可以将任何 HTML 和 XML 文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型,每...
    云之外阅读 547评论 0 1
  •   尽管 DOM 作为 API 已经非常完善了,但为了实现更过的功能,仍然会有一些标准或专有的扩展。   2008...
    霜天晓阅读 439评论 0 0