• 关于 XX.getElementsByTagName('*')的困扰和解决办法


    在学习Javascript的dom阶段,为了加深对节点的理解,方便日后使用,封装了一下获得classname函数,具体如下:

     1    <script>
     2         function getByClass(Parent, sClass) {
     3             var aEle = Parent.getElementsByTagName('*');
     4             var aReturn = [];
     5             for (var i = 0; i < aEle.length; i++) {
     6                 if (aEle[i].className == sClass) {
     7                     aReturn.push(aEle[i]);
     8                 }
     9             }
    10             return aReturn;
    11         };
    12         window.onload = function () {
    13             var aUl = document.getElementsByTagName('ul');
    14             var aLi = getByClass(aUl, 'box');
    15             alert(aLi.length);
    16             for (var i = 0; i < aLi.length; i++) {
    17                 aLi[i].style.background = 'red';
    18             }
    19         };
    20     </script>
    21 </head>
    22 
    23 <body>
    24     <ul>
    25         <li class="box">1</li>
    26         <li class="box">1</li>
    27         <li></li>
    28         <li></li>
    29         <li class="box">1</li>
    30     </ul>
    31 </body>

    发现第三行始终报错:Uncaught TypeError: Parent.getElementsByTagName is not a function

    多方测试,发现所有元素获取都正常,形参Parent得到的也是aUl,在网上搜索解决办法也迟迟未果,我便开始了如下尝试:

    首先我判断应该是Parent处出现了问题,那么我在13行下加了一行:

    var a = document.getElementsByTagName('ul').getElementsByTagName('*');

    同样显示报错,所以问题出在了这个getElementsByTagName上。

    实际上document.getElementsByTagName()虽然数量是1,但是同样是个数组。

    getElementsByTagName()方法的操作对象是一个确定唯一的元素,因此不满足。

    将3行改为  var aEle = Parent(0).getElementsByTagName('*'); 即可。

    ps:

    在获得元素后,可用innerHtml获取和修改元素。

  • 相关阅读:
    中文字符串怎么按拼音比较大小(转)
    C语言的面向对象技术(转)
    学校网又不行了哇。人人也上不了了。
    POJ2255Tree Recovery
    myeclipse无法编译java源文件(转)
    SQL语句中JOIN的用法(转)
    POJ3094Quicksum
    ssh_exchange_identification: Connection closed by remote host 问题的解决 (转)
    56视频网除了广告都看不了了
    java实现微信扫一扫详解
  • 原文地址:https://www.cnblogs.com/xmjs/p/12300318.html
Copyright © 2020-2023  润新知