DOM中元素获取方式以及节点的应用

DOM中元素获取的方式

(DOM:document object model)

  • id获取 :document.getElementById('div')
    • id获取只能document
  • class获取:document.getElementsByClassName('p')
  • tagName:可以限定范围的获取元素
  • querySelect
    • querySelector() 方法仅仅返回匹配指定选择器的第一个元素。如果你需要返回所有的元素,请使用 querySelectorAll() 方法替代。
    • var oDiv=document.querySelector('div');
    • var oDiv=document.querySelector('#divId');
    • var oDiv=document.querySelector('.divClass');
  • querySelecortAll;
    • querySelectorAll获取到的是一组元素
querySelector.png

节点

nodeType nodeName nodeValue
文本节点 3 "#text" 文本内容
元素节点 1 大写的标签名 null
注释节点 8 #comment 注释内容
document节点 9 #document null

节点关系

  • children 它返回指定元素的子元素集合。经测试,它只返回html节点
    • 一般情况兼容,在IE7/8下如果有注释,拿到的会包含注释
  • childNodes 它返回指定元素的所有子元素集合,包括html节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。
children与childNodes.png
  • parentNode 返回某节点的父节点。
    如果指定的节点没有父节点则返回 null 。
  • previousSibling 上一个哥哥节点
    previousSibling属性返回元素节点之前的兄弟节点(包括文本节点、注释节点);
    previousElementSibling属性只返回元素节点之前的兄弟元素节点(不包括文本节点、注释节点) 高级浏览器支持
  • nextSibling 下一个弟弟节点

封装

  • getChildren 获取当前容器下所有的子元素
       function getChildren(parent,tagName) {
        var aChild=parent.childNodes;
        var ary=[];
        for(var i=0 ;i<aChild.length;i++){
            if(aChild[i].nodeType==1){
                tagName?aChild[i].tagName.toLowerCase()==tagName.toLowerCase()&&ary.push(aChild[i]):ary.push(aChild[i]);
            }
        }
        return ary;
    }

获取上一个哥哥元素

    function pre(ele) {
        if(ele.previousElementSibling){
            return ele.previousElementSibling;
        }
        var prev=ele.previousSibling;
        while(prev && prev.nodeType==1){
            prev=prev.previousSibling;
        }
    }

获取所有的弟弟元素

    function prev(curEle){
        if(curEle.previousElementSibling){
            return curEle.previousElementSibling;
        }
        var pre=curEle.previousSibling;
        while(pre && pre.nodeType !== 1){
            pre=pre.previousSibling;
        }
        return pre;
    }
    function nextAll(ele) {
        var ary=[];
        var nex=next(ele);
        while(nex){
            ary.push(nex);
            nex=next(ele);
        }
        return ary;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • var utils = (function () {var frg = 'getComputedStyle' in...
    高冷潜质再发光阅读 2,958评论 0 0
  • var utils = (function () { var flag = "getComputedStyle" ...
    love2013阅读 3,294评论 0 0
  • 我们首先要明白,我们给页面添加效果用到的js到底是什么?js其实包含三部分:dom 文档对象模型 bom 浏览...
    一直以来都很好阅读 4,191评论 0 0
  • DOM DOM内容主要分为四部分: 什么是DOM和节点; 获取节点; 节点操作(3种); 属性操作(3种)。 什么...
    magic_pill阅读 4,196评论 0 1
  • 唔.. 1 她叫做顾小喵,是我的同桌,也是唯一知道我是Les的人。 有意无意,她总是对我很好。 她,是不是,喜欢我...
    笙歌儿阅读 2,732评论 5 1