为什么会报错 求大神指教

Java124628022 2013-05-29 05:31:53

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
window.onload = function(){
var imgw = document.getElementById('wrap');
var btn = imgw.getElementsByTagName('span');
var num = imgw.getElementsByTagName('em');

for(var i=0; i<btn.length; i++){
btn[i].onclick = function(){
alert(num[i].innerHTML);
}
}
}
</script>
</head>

<body>
<ul id="wrap">
<li>
<span>喜欢</span>
<em>0</em>
</li>
<li>
<span>喜欢</span>
<em>1</em>
</li>
</ul>
</body>
</html>


TypeError: num[i] is undefined
alert(num[i].innerHTML);

为什么说没定义呢 要怎么样才能 输出 num每个的innerHTML
...全文
155 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Java124628022 2013-05-29
  • 打赏
  • 举报
回复
知道了 汗 最后一个问题 怎么让em 和 span绑定呢 我现在的需求是 点击span 喜欢变成 已喜欢 然后 em 从0 + 1 我现在实现了 点击span 但是我不知道 如何获取同个li下的 em btn[i].onclick = function(){ alert(this.nextSbiling); } 这样也打印不出来 em
jia_90h 2013-05-29
  • 打赏
  • 举报
回复
这样就可以了
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
    window.onload = function(){
        var imgw = document.getElementById('wrap');
        var btn = imgw.getElementsByTagName('span');
        var num = imgw.getElementsByTagName('em');
         
        for(var i=0; i<btn.length; i++){
          (function(){
            var m = i;
            btn[i].onclick = function(){
                alert(m);
            }
          })(i);
        }   
    }
</script>
</head>
 
<body>
    <ul id="wrap">
        <li>
            <span>喜欢</span>
            <em>0</em>
        </li>
        <li>
            <span>喜欢</span>
            <em>1</em>
        </li>
    </ul>
</body>
</html>
KK3K2005 2013-05-29
  • 打赏
  • 举报
回复
闭包 i 在退出 for 之后 已经变成了 2 for(var i=0; i<btn.length; i++){ (function(i){ btn[i].onclick = function(){ alert(num[i].innerHTML); } })(i); }
SDLin 2013-05-29
  • 打赏
  • 举报
回复
你的i在循环体里面, 已经循环了2次了,所以就变为2了。
Java124628022 2013-05-29
  • 打赏
  • 举报
回复
打印果然出错了 FF下出现的是2 为什么呢 可以解释下吗
SDLin 2013-05-29
  • 打赏
  • 举报
回复

 for(var i=0; i<btn.length; i++){
            btn[i].onclick = function(){
               alert(i)
            }
        }  
打印下看看就明白了;

87,910

社区成员

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

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