好的,所以这是我的代码,尝试使用当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>
我的代码似乎不起作用,有任何错误,做我想做的事情吗?
答案 0 :(得分:3)
您的代码存在严重问题。
if (contactState = 0)
会将contactState
设置为0
。您需要==
,将 contactState
与0
进行比较。以下是我会尝试做的事情:
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;
现在,只要在执行该行代码时尚未发生加载事件,就会调用该函数。