js中为什么for in遍历出现了undefined?求解

dabaoonline 2015-07-21 12:20:30

<!DOCTYPE html>
<html>
<head>
<title>01节点访问.html</title>
<script type="text/javascript">
function run() {
var arr = document.getElementsByTagName("li");
for ( var i in arr) {
alert(arr[i]);
}
}
</script>
</head>

<body>
<ul id = "langue">
<li>hello</li>
<li>java</li>
<li>android</li>
</ul>

<input type = "button" value = "点击获取" onclick="run()"/>
</body>
</html>


...全文
1506 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sydhr_1994 2015-07-21
  • 打赏
  • 举报
回复
先不说用for循环做。 并没有弹出undefined啊
forwardNow 2015-07-21
  • 打赏
  • 举报
回复

<!DOCTYPE html>
<html>

<head>
    <title>01节点访问.html</title>
    <script type="text/javascript">
    </script>
</head>

<body>
    <ul id="langue">
        <li>hello</li>
        <li>java</li>
        <li>android</li>
    </ul>
    <script type="text/javascript">
      var arr = document.getElementsByTagName("li");
      for (var i in arr) {
          console.info( i, arr[i] );
      }

      /*
      输出:
        0         <li>hello</li>
        1         <li>java</li>
        2         <li>android</li>      
        length    3
        item      function item() { [native code] }
        namedItem function namedItem() { [native code] }

      说明:
        document.getElementsByTagName("li") 获取到的是一个类数组对象NodeList,
        它是一个对象而不是真正的数组, 所以,通过for/in语法遍历也会输出它继承过来的属性和方法
      */

      /*
        你可以使用for循环来遍历数组以及类数组对象
      */
      for ( var i = 0; i < arr.length; i++ ) {
          console.info( arr[ i ] );
      }
    </script>
</body>

</html>
似梦飞花 2015-07-21
  • 打赏
  • 举报
回复
for in遍历对象的所有可枚举的属性 对于array和nodelist最好用for
天际的海浪 2015-07-21
  • 打赏
  • 举报
回复
你把i变量输出一下就明白了 最好不要用for in遍历一些dom集合对象,因为这样会遍历出这些对象的属性名和方法名出来

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧