javascript - 一个选项卡上的问题,for中创建的变量显示未定义。
PHP中文网
PHP中文网 2017-04-11 10:17:54
[JavaScript讨论组]



    
    Document
    
    


    
  • 房产
  • 家居
  • 二手房

1

2

3

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
大家讲道理

因为你给li循环添加onclick事件之后,变量i的值已经是3了,所以li[3]是未定义的,你可以用一个闭包解决问题,或者给每个li添加个index索引值,一种方案如下

 for(var i=0;i<li.length;i++){
                li[i].index=i;//添加索引值
                li[i].onclick=function(){
                    for(var j=0;j<op.length;j++){
                        li[this.index].className='';  
                        op[j].style.display='none';
                    }//执行完for循环之后,j=3
                    this.className='active';
                    op[this.index].style.display='block'  
                }
            }
ringa_lee

script标签里面的代码改成下面就好了,这是JS闭包的问题,可以参考我之前写的博客

window.onload=function(){
    var li=document.getElementsByTagName('li');
    var op=document.getElementsByTagName('p');
    for(var i=0;i<li.length;i++){
        (function(i){
            li[i].onclick=function(){
                for(var j=0;j<op.length;j++){
                    li[i].className='';                  
                    op[j].style.display='none';    
                }
                this.className='active';
                op[i].style.display='block'  
            }    
        })(i)
        
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号