function g(id) {return document.getElementById(id);}function gs(o,tn) {return o.getElementsByTagName(tn);}//兼容性函数(兼容FF,IE)
var getElementsByName = function(name) {
    var returns = document.getElementsByName(name);
    if(returns.length > 0) return returns;
    returns = new Array();
    var e = document.all;
    for(var i = 0; i < e.length; i++) {
        if(e[i].getAttribute("name") == name) {
             returns[returns.length] = e[i];
        }
    }
    return returns;
}//TAB页切换
function selecttab(tabid){
var curtabpage = g("tabpage_"+tabid.id.substr(4,2));
var tabtitle = getElementsByName(tabid.id.substr(0,5)+"_t");
//刷新标签头格式
for(var i=0;i<tabtitle.length;i++){
if(tabtitle[i].id==tabid.id){
tabtitle[i].children[0].className="on";
}
else{
tabtitle[i].children[0].className="";
}
}
//隐藏其他标签页体,显示本标签体
var tabs = getElementsByName(tabid.id.substr(0,5));
for(var i=0;i<tabs.length;i++){
if(tabs[i].id==curtabpage.id){
tabs[i].style.display="block";
}
else{
tabs[i].style.display="none";
}
}
}代码要实现的效果是,鼠标的onmouseover事件触发时,根据鼠标当前位置的tab也,显示tab页的内容。tab页的内容是用div
实现的。最终结果是,在我的电脑上,用FF,IE6到IE8都可以用。在某些同事的电脑上也可以。但在某些同事的电脑上就不可以(无论是FF还是IE),标签页能够切换,但标签的内容不会切换。他们用的FF版本和我一样。然后我在他们的电脑上测试,发现:
tabs[i].style.display="block";
tabs[i].style.display="none";
这两段话可以被执行,但似乎没有效果。请教高手们,不知道是什么原因?
在我本地测试,

解决方案 »

  1.   

    var e = document.all;
      for(var i = 0; i < e.length; i++) {
    这在ff下会不错???/
      

  2.   

    是啊,清除缓存有点用处,同事跟我说没有效果的时候,我本地用IE测试(我开发是用FF测试的),发现确实无效,然后清除了缓存,就可以了。我告诉他这个解决方案,但他做了仍然不行。真是晕倒。JS这东西这么难搞吗,调试这个已经1天多了,之前是用children.item(i)在其他机器上不能用,FF提示说无效的方法,后来改成children[i],JS开发真的是步步陷阱吗,真是比较可怕?还是它欺负我是新手啊
      

  3.   

    document.all只是效率低点,没其他问题吧?
      

  4.   

    FF下没有这个属性document.all , document.all.property调用一定会错,
    没错的话,是因为var returns = document.getElementsByName(name);
      if(returns.length > 0) return returns;
    如果没走这个条件,必然会错,这是个隐患!
      

  5.   

    是的,FF在第一个if处返回了,因为IE调用getElementsByName是根据ID来查找的,所以需要这个兼容性函数。
    不过这样分析看来,这也不会是导致本问题的原因。
      

  6.   

    因为某些原因,这个网页,document.all在FF下不可能被执行就返回了。问题的焦点在于:我用最简单的alert()方法测试,发现
    tabs[i].style.display="block";
    tabs[i].style.display="none";
    这两段话可以被执行,但似乎没有效果。