[英]javascript functions only working once
我有这两个javascript函数,它们可以更改背景以及显示和隐藏字段,但是每个按钮只能使用一次
function showabout(){
hidecontact = document.getElementById("contactus");
hidecontact.style.display = "none";
hide.style.backgroundImage = "url(aboutus.jpg)";
showabout = document.getElementById("aboutus");
showabout.style.display = "inline";
showabout.style.cssFloat = "left";
secbuttons.style.paddingLeft = "670px";
}
function showcontact(){
hideabout = document.getElementById("aboutus");
hideabout.style.display = "none";
hide.style.backgroundImage = "url(contact.jpg)";
showcontact = document.getElementById("contactus");
showcontact.style.display = "inline";
showcontact.style.cssFloat = "left";
secbuttons.style.paddingLeft = "670px";
}
<font color="#33FF66"><h2 style="cursor:pointer" onmouseover = "showabout()"> </h2></font>
<font color="#33FF66"><h2 style="cursor:pointer" onclick="showcontact()"> </h2></font><br />
<font color="#33FF66"><h2 style="cursor:pointer" onmouseover = "showcontact()"> </h2></font>
三个H2是导致错误的行。 它说“未捕获的类型错误,对象不是函数”。
您的问题是您要重新定义showabout
和showcontact
(您的函数)以引用HTML元素。
这两个代码段:
function showabout() {
...
}
和
showabout = document.getElementById("aboutus");
都设置变量window.showabout
。 第一个将函数分配给window.showabout
,第二个将HTML元素分配给window.showabout
。
因为您没有使用var
关键字在函数中声明变量, showabout = document.getElementById("aboutus")
showcontact
showabout = document.getElementById("aboutus")
重新分配showcontact
来引用该元素,而不是您要定义的函数。 因此,当您尝试第二次调用showcontact()
时,它将不起作用,因为showcontact
不再是一个函数。
无论何时编写JavaScript,简单的修复实际上都是一个很好的规则:
这里还有第二课:
尽管如果您只是提前声明showabout
变量,代码就可以工作,但是它仍然使阅读时感到困惑。 该函数及其显示的元素应具有不同的名称。 说,调用函数showAboutBox
及其显示aboutBox
的框。 这样,就不会因为您或您的语言而对您指的是什么感到困惑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.