IE6和IE8对JS字符串操作的细微差别

添加评论 2010年1月3日

昨晚在做网站页面导航的时候,采用了jquery的技术做小导航切换,当用户在页面中点击导航就会弹出一个小的导航,因为我的操作系统是win7,所以浏览器安装的是默认IE8,系统上还安装了谷歌浏览器,当时做完以后在IE8浏览器上显示是没有任何问题的,在谷歌浏览器上测试也是正常的,本来以为JS代码应该是没有问题了,但是后来发现在IE6却无法正常运行。下面是页面导航的JS代码:

$(function(){     
            $("#tr1 div").bind("click", function(){//给所有在tr1里面的DIV注册一个OnClick事件   
                       var name = $(this).attr("id"); //获取ID   
                     
                   if(name.indexOf('p')=="0")  
                   {       
                        for(var k=1;k<15;k++)  
                        {     
                            var cid="child"+k;  
 
                            if((name.length==7&&k==name.substring(6,7))||(name.length==8&&k==(name.substring(6,7)+name.substring(7,8))))  
                            {                          
                                $("#"+cid+"").show();     
                            }  
                            else 
                            {     
                                $("#"+cid+"").hide();    
                            }  
                        }  
                    }               
            });  
        });    

$(function(){  
            $("#tr1 div").bind("click", function(){//给所有在tr1里面的DIV注册一个OnClick事件
                       var name = $(this).attr("id"); //获取ID
                  
                   if(name.indexOf('p')=="0")
                   {    
                        for(var k=1;k<15;k++)
                        {  
                            var cid="child"+k;

                            if((name.length==7&&k==name.substring(6,7))||(name.length==8&&k==(name.substring(6,7)+name.substring(7,8))))
                            {                       
                                $("#"+cid+"").show();  
                            }
                            else
                            {  
                                $("#"+cid+"").hide(); 
                            }
                        }
                    }            
            });
        });   

刚开始的时候在IE8浏览器下,我直接获取name的第一个字母,直接用数组的下标方法 name[0],可以获取在谷歌浏览器运行可以,但是我给我同事用的时候他的是IE6说没反映,我刚开始没注意 还以为他是开玩笑,今天我用VS自带的浏览器浏览的时候发现真的有问题 ,郁闷,以为是jquery不兼容,找了半天都说jquery兼容性好,没有说兼容性不好的,我一步一步调试终于发现在判断name[0]==p这个问题上找到了,于是马上换代码name.substring(0,1),在进行测试,总算是没有问题了,有时候看似很小的问题却真是折磨人!提醒大家以后制作网页的时候如果需要使用的jquery,还需多注意跨浏览器的问题,以及编码的问题,在就是字符转义,需要多多考虑。

  1. 2010年1月17日 at 12:56 | #1
    戴桃

    那些顽固的人才用IE6,IE9都要出来了,居然还用人在用IE6,那么低端的东西。各位做开发的最头疼的就是兼容吧,我们何不抛弃那些顽固的人呢?以后不做IE6的兼容,制作IE7,IE8,IE9以及火狐的兼容就够了,强迫那些用IE6的人自动升级到到IE8

  1. 还没有 trackbacks
订阅评论