-1

我的 index.php 中有一个按钮,它显示一个菜单并隐藏页面的内容。但是它应该适用于两个不同的模板。我的功能基本上是这样的:

function show_menu();
{
document.getElementById('menu').style.display="block";
document.getElementById('content1').style.display="none";
document.getElementById('content2').style.display="none";
}

如果我只放其中一个内容,隐藏它就可以了。但是,如果我将两个内容都放入,则不会。这是怎么回事?这是不可能的还是我做错了什么?

4

3 回答 3

3

我不确定我是否正确地解决了您的问题,但如果我这样做了,问题是您无法设置页面上不存在的元素的样式。您必须检查null值:

function show_menu()
{
document.getElementById('menu').style.display="block";

var content1 = document.getElementById('content1'),
    content2 = document.getElementById('content2');

if (content1) {
    content1.style.display="none";
}
if (content2) {
    content2.style.display="none";
}
}
于 2012-07-03T11:54:59.743 回答
2
function show_menu() //Removed the semicolon, could be the culprit causing the problem
{
  document.getElementById('menu').style.display="block";
  document.getElementById('content1').style.display="none";
  document.getElementById('content2').style.display="none";
}
于 2012-07-03T11:53:16.503 回答
1

content1我猜您的模板之一中没有带有 id 的元素。style然后,当访问不存在元素的属性时,您的代码将失败,停止脚本执行并且不隐藏content2.

我想到了三种可能的解决方案:

  • 在所有模板中使用相同的 ID。如果两者都包含content具有相同功能目的的 a,则应将它们命名相同。然后,您的脚本将适用于所有这些模板。
  • 使用不同的脚本或指示使用哪个模板的变量,以便脚本可以确定正确的 id。
  • 动态检查元素的存在(你总是应该这样做):
function show_menu() {
    var menu = document.getElementById('menu'),
        content1 = document.getElementById('content1'),
        content2 = document.getElementById('content2');

    if (menu)
        menu.style.display="block";
    if (content1)
        content1.style.display="none";
    if (content2)
        content2.style.display="none";
}
于 2012-07-03T12:03:18.017 回答