好的,这是我的代码,试着让它,当一个按钮点击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>
我的代码似乎不工作,是否有任何错误,做我想做的事?
您的代码有一些严重的问题。
- 首先,你的前几行根本没有意义。
- 下一步,
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";
}
你在分配,而不是比较。
同样,你不想让翻转条件中的状态吗?如果你还不知道,你应该学习如何在你使用的任何浏览器上查看你的JavaScript控制台,并检查它是否在那里记录错误。
你不希望contactState = X
出现在你的if
语句中。你想要contactState == X
不确定window.onload
在你的代码开始做什么。
查看您的代码:
> window.onload;
是对window对象的onload属性的引用。不管这个值是什么,它都不会被赋值给任何东西,所以它会被忽略(或多或少)。
> {
var contactState = 0;
}
{}
字符包围了一个块语句,它通常与以下语句一起使用:if、for、else等等。就其本身而言,它不做任何事情,因此可以将其从上面移除而不会产生任何影响。该代码与:
var contactState = 0;
声明了变量contactState,当代码执行时,它被分配一个数字0(零)的值。
Blender对未调用的函数有一些注释。考虑到它正在处理DOM元素,您可能希望它在load事件发生时运行,因此您可能打算将该函数分配给窗口。onload 属性:
window.onload = contactChange;
现在,函数将在加载事件发生时被调用,前提是在执行这行代码时它还没有发生。