2011-11-10 19 views
1

我正在使用此脚本来显示/隐藏我的页面上的菜单部分,但似乎无法在Internet Explorer上工作。我怎样才能改变代码,以便它可以在IE上运行?更改显示隐藏脚本,以便它可以在IE上工作

我认为这可以通过切换功能更容易地在JQuery中完成,但我想保持相同的结构,任何人都可以帮助我吗?

visibleDiv1 = ""; 
visibleDiv2 = ""; 
visibleDiv3 = ""; 
visibleDiv4 = ""; 

function showHide1(elementid1){ 
    if (document.getElementById(elementid1).style.display == 'none'){ 
    document.getElementById(elementid1).style.display = ''; 
    if(visibleDiv1 != ""){ 
     if(visibleDiv1 != elementid1){ 
     document.getElementById(visibleDiv1).style.display = 'none'; 
     } 
    } 
    visibleDiv1 = elementid1; 
    } else { 
    document.getElementById(elementid1).style.display = 'none'; 

    } 
} 

function showHide2(elementid2){ 
    if (document.getElementById(elementid2).style.display == 'none'){ 
    document.getElementById(elementid2).style.display = ''; 
    if(visibleDiv2 != ""){ 
     if(visibleDiv2 != elementid2){ 
     document.getElementById(visibleDiv2).style.display = 'none'; 
     } 
    } 
    visibleDiv2 = elementid2; 
    } else { 
    document.getElementById(elementid2).style.display = 'none'; 
    } 
} 

function showHide3(elementid3){ 
    if (document.getElementById(elementid3).style.display == 'none'){ 
    document.getElementById(elementid3).style.display = ''; 
    if(visibleDiv3 != ""){ 
     if(visibleDiv3 != elementid3){ 
     document.getElementById(visibleDiv3).style.display = 'none'; 
     } 
    } 
visibleDiv3 = elementid3; 
    } else { 
    document.getElementById(elementid3).style.display = 'none'; 
    } 
} 

function showHide4(elementid4){ 
    if (document.getElementById(elementid4).style.display == 'none'){ 
    document.getElementById(elementid4).style.display = ''; 
    if(visibleDiv4 != ""){ 
     if(visibleDiv4 != elementid4){ 
     document.getElementById(visibleDiv4).style.display = 'none'; 
     } 
    } 
    visibleDiv4 = elementid4; 
    } else { 
    document.getElementById(elementid4).style.display = 'none'; 
    } 
} 

回答

0

这实在是很糟糕的编码,你需要重新使用你的代码,并简单地调用你想隐藏的元素。您已为每个元素创建函数。

你应该做的一个主要功能是这样的:

function showHide(elementid, visibleDiv){ 
    if (document.getElementById(elementid).style.display == 'none'){ 
    document.getElementById(elementid).style.display = ''; 
    if(visibleDiv != ""){ 
     if(visibleDiv != elementid1){ 
     document.getElementById(visibleDiv).style.display = 'none'; 
     } 
    } 
    visibleDiv = elementid; 
    } else { 
    document.getElementById(elementid).style.display = 'none'; 

    } 
} 

,后来干脆调用这个函数做这样的事情:

showHide('id-of-your-element', 'visible-div-etc'); 

我真的建议抓住jQuery的寿,因为这简单开箱即可更好地支持隐藏的东西,您可以专注于其他事情。使用toggle()或只是普通的.hide()/.show()函数。

+0

好多了!我确实尝试使用Jquery脚本来做同样的事情,但是当点击一个新的脚本时,我遇到了关闭同级单元的问题。实际上,我发现代码有什么问题,看起来IE不喜欢以数字开头的ID,所以我给它们添加了一个前缀,现在它正在运行。 – MACC

+0

umm ...名称/变量(id/class)不能是数字,它的编程,变量不能是'12 =“hello”'。这是常识。 – Jakub

+0

@ S3nd41,如果你喜欢我的答案btw,检查绿色复选框下的投票上/下按钮。 – Jakub

相关问题