问答详情
源自:9-7 节点属性

关于getElemenstByName(),getElementsByTagName()不都是获取元素节点的么???

<body>

  <ul>

     <li title="title">javascript</li>

     <li title="title">HTML/CSS</li>

     <li title="title">jQuery</li>     

  </ul>

  <script type="text/javascript">

    var anode=document.getElementsByTagName("li");

//  为什么var anode=document.getElementsByName("title");却不可以??

    for(i=0;i<anode.length;i++)

    {document.write(anode[i].nodeName+"<br />");

     document.write(anode[i].nodeValue+"<br />");

     document.write(anode[i].nodeType+"<br />");

        };

    

  </script>

</body>


提问者:慕粉1469604703 2016-09-06 14:39

个回答

  • 冰上行舟
    2016-09-07 19:30:36
    已采纳

    哦,不好意思~其实,你的var anode=document.getElementsByName("title")的确不行,因为你的“title”不是“name”属性!!!正确:

    用法getElementsByName("name属性")

    以下附上我修正的代码:

    <body>

      <ul>

         <li name="title">javascript</li>

         <li name="title">HTML/CSS</li>

         <li name="title">jQuery</li>     

      </ul>

      <script type="text/javascript">

    //    var anode=document.getElementsByTagName("li");

    var anode=document.getElementsByName("title");

        for(i=0;i<anode.length;i++)

        {

        document.write("节点内容:"+anode[i].innerHTML+"<br/>");

        document.write(anode[i].nodeName+"<br />");

         document.write(anode[i].nodeValue+"<br />");

         document.write(anode[i].nodeType+"<br />");

         document.write("----------------------------"+"<br/>");

            };

        

      </script>

    </body>


  • 冰上行舟
    2016-09-06 17:42:26

    一样可以的啊!

    getElementsByTagName:通过标签获取节点元素集合;

    getElementsByName:通过name属性获取节点元素集合;

    以上返回的都是以数组形式返回的,从你的问题中,我注意到你的“getElementsByTagName”和“getElementsByName”在Element后面漏打了“s”,估计这是导致你不能正常运行程序的主要原因~