javascript中查找节点的方法

2025-10-24 00:11:24

1、getElementById()

返回一个对象,这个对象对应值document对象里的一个独一无二的元素

例子(效果图):

后面的html部分代码都通用,如下:

<h1>你喜欢什么水果?</h1>

<ul id="ul1">

    <li class="apple" title="apple">苹果</li>

    <li id="banana" title="banana">香蕉</li><li>梨</li>

    <li title="grape">紫葡萄</li>

    <li class="apple" title="Dragon">火龙果</li>

    <li title="watermelon">西瓜</li>

    <li class="apple" title="Mango">芒果</li>

    <li title="cantaloupe">哈密瓜</li>

    <li>贵妃荔枝</li>

    <li>龙眼</li>

</ul>

JavaScript:

<script>

        var oDiv1=document.getElementById('ul1')

        alert(typeof oDiv1);//object

</script>

javascript中查找节点的方法

2、一般来说不需要为文档里的每一个元素都定义一个id值,DOM提供了另一个方法来获取哪些没有id属性的对象 —— getElementsByTagName()

该方法返回一个对象数组,每个对象分别对应着文档里有着给定标签的一个元素。

例子:

<script>

    var aLi=document.getElementsByTagName('li');

    alert(aLi.length);

</script>

javascript中查找节点的方法

3、getElementsByClassName()

HTML5中新增了一个令人期待已久的方法:getElementsByClassName,这个方法可以通过class属性中的类名来访问元素;这个方法的返回值也和getElementsByTagName类似,都是一个具有相同类名的元素的数组。

例子:

<script>   

    var oLi=document.getElementsByClassName('apple');

    alert(oLi.length);//3

    for(var i=0;i<oLi.length;i++){

        oLi[i].style.color='darkslategray';//修改类名为apple的字体颜色

    }

</script>

javascript中查找节点的方法

4、解决getElementsByClassName的兼容性

getElementsByClassName方法非常有用,不过这只有比较新的浏览器才支持它,这就需要使用已有的DOM方法来实现自己的getElementsByClassName,在新老浏览器中都适用:

    function getByClass(oParent,sClass){

        if(oParent.getElementsByClassName){

            return oParent.getElementsByClassName(sClass);

        }

        else{

            var aEle=oParent.getElementsByTagName('*');

            var aTmp=[];

            var i=0;

            for(i=0;i<aEle.length;i++){

                if(aEle[i].className==sClass){

                    aTmp.push(aEle[i]);

                }

            }

            return aTmp;

        }

    }

这个 getByClass函数有两个参数,第一个参数oParent指DOM树中的搜索起点,第二个参数sClass就是要搜索的类名。如果浏览器支持getElementsByClassName,就返回getElementsByClassName;否则就遍历所有标签,查找到有相应类名的元素。

下面来看getByClass函数的运用:

    var oDiv1=document.getElementById('ul1');

    var apple=getByClass(oDiv1,'apple');

    alert(apple.length);//3

    for(var i=0;i<apple.length;i++){

        apple[i].style.color='darkslategray';//修改类名为apple的字体颜色

    }

效果如图:

可以在低版本的浏览器中做测试

javascript中查找节点的方法

1、firstChild :获取已知节点的第一个子节点

firstChild可以递归使用,如someNode.firstChild.firstChild.firstChild.firstChild……的形式

例子:

alert(document.firstChild.nodeName);

javascript中查找节点的方法

2、lastChild:获取已知节点的最后一个子节点

lastChild跟firstChild一样可以递归使用,也可以someNode.lastChild.lastChild.lastChild.lastChild……;当然也可以和firstChild交替使用啊someNode.lastChild.firstChild.lastChild.firstChild.lastChild.firstChild……

例子(html代码在第一步):

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

alert(oUl.lastChild.nodeName);

注意:元素中的空白被视作文本,而文本被视作文本节点,所以在ul关闭标签前如果有空格,结果会是:nodeName=#text。

在本文第一步中的html代码关闭标签前都是存在空格的,如果要测试这步,要清除空格!

javascript中查找节点的方法

javascript中查找节点的方法

3、childNodes:获取已知节点的子节点集合

可以使用 length 属性来确定子节点的数量,然后遍历所有的子节点并提取所需要的信息;

例子:获取body元素的子节点

    var oBody=document.body.childNodes;

    var oTmp=[];

    for(var i=0;i<oBody.length;i++){

        oTmp=oTmp+oBody[i].nodeName+'……';

       //这里用省略号将各个nodeName分隔

    }

   alert(oTmp);

注意:元素中的空格被视为文本,而文本被视为节点

事实上:someNode.childNodes[0]与someNode.firstChild是相等的;

someNode.childNodes[length-1]与someNode.lastChildChild是相等的。具体测试案例这里不再赘述

javascript中查找节点的方法

1、someNode.previousSibling :返回同一层级中指点节点的前一个节点,被返回的节点以Node对象的形式返回;如果没有someNode.previousSibling就返回null。

例子:

    var oBa=document.getElementById('banana');

    var oApple=oBa.previousSibling;

    oApple.style.color='red';

    alert(oApple.innerHTML);

注意:在本文第一步中的html代码关闭标签前都是存在空格的,如果要测试这步,要清除空格!

javascript中查找节点的方法

2、someNode.nextSibling:返回在同层级中指定节点之后紧跟的节点,被返回的节点以Node对象的形式返回;如果没有someNode.nextSibling 节点,则返回值为 null。

例子:

    var oBa=document.getElementById('banana');

    var oLl=oBa.nextSibling;

    oLl.style.color='black';

    alert(oLl.innerHTML);

注意:在本文第一步中的html代码关闭标签前都是存在空格的,如果要测试这步,要清除空格!

javascript中查找节点的方法

1、someNode.parentNode:返回指定节点的父节点,被返回的节点以 Node 对象的形式返回,如果指定节点没有父节点,则返回 null。

例子:

var oBa=document.getElementById('banana');

var oParent=oBa.parentNode;

alert(oParent.nodeName);

javascript中查找节点的方法

1、getAttribute 获取属性

getAttribute与此前介绍的那些方法有所不同,getAttribute方法不属于document对象,所以不能通过document对象调用;它只能通过元素节点对象调用。

例子:

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

    var aLi=oUl.getElementsByTagName('li');

    for(var i=0;i<aLi.length;i++){

        alert(aLi[i].getAttribute('title'));

    }

依次弹出li的title值,对应没有title属性的li元素相对应的弹出null,这里只截一张图说明

javascript中查找节点的方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢