Javascript折叠HTML - 我的代码无效,你能看到任何错误吗?

时间:2011-11-28 00:15:04

标签: javascript html

好的,所以这是我的代码,尝试使用当onclick =“contactChange”等单击按钮时,它会使显示块不可见:

<script type="text/javascript">
    window.onload; {
        var contactState = 0;
    }
        function contactChange() {
          if (contactState = 0) {
           var contact = document.getElementbyId("main");
           contact.style.display="none";
           contactState = 1;
          }  
          else if (contactState = 1) {
              var contact = document.getElementbyId("main");
              contact.style.display="block";
              contactState = 0;
          }
    }

</script>

我的代码似乎不起作用,有任何错误,做我想做的事情吗?

4 个答案:

答案 0 :(得分:3)

您的代码存在严重问题。

  • 首先,你的前几行完全没有意义。
  • 接下来,if (contactState = 0)会将contactState设置为0。您需要== contactState0进行比较。

以下是我会尝试做的事情:

  function contactChange() {
    var contact = document.getElementbyId("main");

    if (contact.style.display == "none") {
      contact.style.display = "block";
    } else {
      contact.style.display = "none";
    }
  }

或者如果你想得到幻想:

  function contactChange() {
    var contact = document.getElementbyId("main");

    contact.style.display = (contact.style.display == "none") ? "block" : "none";
  }

答案 1 :(得分:2)

你要分配,而不是比较。

另外,你不想翻转条件中的状态吗?您将其设置为与现有值相同的值。

答案 2 :(得分:0)

如果你还不知道,你应该学习如何在你正在使用的任何浏览器上查看你的JavaScript控制台,并检查它是否在那里记录错误。

您的contactState = X语句中不需要if。你想要contactState == X

不确定代码开头的window.onload正在做什么。

答案 3 :(得分:0)

查看您的代码:

> window.onload;

这是对窗口对象的 onload 属性的引用。无论价值是多少,它都不会分配给任何东西,所以它被忽略(或多或少)。

> {    
   var contactState = 0;
     

}

{}字符包含块语句,通常用于 if for 等语句其他等等。它本身没有任何作用,因此它可以从上面删除而没有任何效果。该代码与:

相同
var contactState = 0;

声明变量 contactState ,当执行代码时,它被赋值为0(零)的值。

Blender对该函数有一些评论,未被调用。鉴于它正在处理DOM元素,您可能希望在 load 事件发生时运行它,因此您可能需要将该函数分配给 window.onload 属性:

window.onload = contactChange;

现在,只要在执行该行代码时尚未发生加载事件,就会调用该函数。