试图在javascript调用中隐藏div与内容

时间:2014-08-11 09:25:47

标签: javascript css html5 show-hide

我一直在尝试使用此http://www.gloucesterwebdesign.com/showhidecontent/

但是我没有点击链接,而是想要一些JavaScript来调用这个函数

    if(input == true){
      toggleLayer('id');
    }
    else if(input == false){
      toggleLayer('id2');
    }

脚本调用toogleLayer函数,但没有任何反应,并且诅咒 输入值放在另一个脚本中,在页面加载时运行。我一直想知道这是不是问题。有谁对此发表评论?

- 更新 - 所以我要求更多的代码, http://pastebin.com/UD3tjz1s

  • localStorage中的值在另一个页面上设置,因此您只能在此页面之后获取此页面。这只是为了显示使用
  • 的数据类型

我是一个javaScript noob,所以希望它不难阅读

1 个答案:

答案 0 :(得分:0)

好的,我做了一个快速测试,这样就可以了。只需更换你当前的功能,它就更清洁,更简单。此外,每个当前浏览器都支持document.getElementById(id)并返回到IE6,因此除非您需要netscape支持,否则不会;需要你提供资源的所有额外代码。

function toggleLayer(id){
    // get the element (this is supported in all modern browsers)
    var element = document.getElementById(id);
    // set the style display of this element to none if its set to be
    // anything else than none, otherwise set it to block
        element.style.display = element.style.display != "none"
            ? "none"
            : "block";
 }

我对此进行了测试,但确实有效。

编辑 - [不同的东西!]

好的,对不起,我有点误解,但我找到了解决问题的方法。下面是什么:因为你的javascript代码高于你的DIV元素,它会在页面创建DIV元素之前执行。因此,javascript将查找元素,并且它将返回undefined,因为它们尚未定义。因此,您必须将脚本移动到结束标记之前,或者将以下内容添加到代码中(请不要添加间隔以查看您的函数是否正常工作):

window.onload = function(){
        setInterval(setSize,1000);
        // the rest of your functions here - the above interval is so you can see it toggling
}
// function toggleLater(){...} here

您可能还想移动window.onload函数的ToggleLayer OUTSIDE,因为您无法从页面触发它(同样,该函数现在定义为INSIDE window.onload并且在DIV元素的范围之外。 ..)。