zoukankan      html  css  js  c++  java
  • Javascript 查找元素

    DOM定义了多种查找元素的方法,除了我们常用的getElementById(),还有getElementsByTagName()和getElementsByName()。使用这几种方法方法我们可以查找html文档中的任意html元素。

    getElementById()
    首先来看下getElementById(),这个方法很简单,只需在参数中传入html标签的id属性值即可,由于html页面中的id具有唯一性,因此该方法返回的是单个元素对象。例如:

    复制代码 代码如下:

    <span id="span1">span标签</span>
     <script>
         var oSpan = document.getElementById('span1'); //查找span元素
         alert(oSpan.innerHTML); //弹出span标签中的内容
     </script>


    getElementsByTagName()
    getElementsByTagName()参数需传入的是一个html标签名,它返回的是html文档中所有与之匹配的元素列表,这个列表具有部分数组的特性,因此也称其为类数组。当我们想操作某个特定的元素时,我们可以使用数组索引或item()来实现,例如:

    复制代码 代码如下:

    <script>
         var oDiv = document.getElementsByTagName('div'); //查找所有div元素,返回一个元素列表
         /* 操作特定元素 */
         alert(oDiv[0].innerHTML) //弹出第一个div中的内容
         alert(oDiv.item(1).innerHTML) //弹出第二个div中的内容
     </script>


    当然我们还可以通过length属性来循环遍历节点:

    复制代码 代码如下:

    <script>
         var oDiv = document.getElementsByTagName('div'); 
         for(var i = 0; i < oDiv.length; i++){
             //do something
         }
     </script>


    getElementsByName()
    getElementsByName() 常用来查找表单元素,参数中传入html标签的name属性值,由于文档中多个html标签的name值可能相同(如单选按钮),因此该方法返回的也是一 个元素列表。具体操作方法与getElementsByTagName()类似,这里不在赘述。

    复制代码 代码如下:

    <script>
         var oIpt= document.getElementsByName('city'); //查找name值为city的元素 
         alert(oIpt[0].value);
         alert(oIpt.item(1).value);
     </script>


    getByClass()
    虽然使用上面的几种方法已经可以满足常见需求,但是为了更方便的访问元素节点,我们一般会自己封装一个通过class来查找元素的方法:

    复制代码 代码如下:

    <script>
         /** getByClass **/
         function getByClass(oParent, sClass){
             var aEle = oParent.getElementsByTagName('*');
             var re = new RegExp('b' + sClass + 'b');
             var aResult = [];
             for(var i = 0; i < aEle.length; i++){
                 if(re.test(aEle[i].className)){
                     aResult.push(aEle[i]);
                 }
             }
             return aResult;
         }
     </script>


    getByClass 需传入两个参数,其中oParent为参考节点,即在oParent节点中查找元素,sClass为要查找的元素class的值。通过循环将 oParent内的html标签的class值与传入的sClass值一一对比,符合条件的会存入到数组aResult中,最后再返回这个数组。

    另外这里之所以用正则来匹配而没有直接用aEle[i].className == sClass,是避免标签的class值为多个时,出现匹配失效的情况。

  • 相关阅读:
    Linux删除文件相关命令
    Bing语句
    VS2013配置Winpcap
    node10-mongoose
    node09-cookie
    node08-express
    node07-http
    node06-path
    node05-fs
    node04-buffer
  • 原文地址:https://www.cnblogs.com/skying555/p/4831369.html
Copyright © 2011-2022 走看看