【发布时间】:2011-08-20 11:36:50
【问题描述】:
我有一些 javascript 应该在窗口加载后运行,但由于某种原因,它永远不会运行。
这是我的代码:
function setClasses(){
document.getElementsByClassName("gchoice_35_0")[0].onclick = sedanShow;
document.getElementsByClassName("gchoice_22_0")[0].onclick = sedanShow;
document.getElementsByClassName("gchoice_34_0")[0].onclick = sedanShow;
document.getElementsByClassName("gchoice_34_1")[0].onclick = suvShow;
document.getElementsByClassName("gchoice_35_1")[0].onclick = suvShow;
document.getElementsByClassName("gchoice_22_1")[0].onclick = suvShow;
document.getElementsByClassName("gchoice_22_2")[0].onclick = vanShow;
document.getElementsByClassName("gchoice_35_2")[0].onclick = vanShow;
document.getElementsByClassName("gchoice_34_2")[0].onclick = vanShow;
}
window.onload = setClasses;
setClasses() 函数似乎没有运行。但是,当我通过 FireBug 的控制台手动调用它时,它确实有效。
代码放在我网页的页眉中。
感谢任何帮助。
完整的html sn-p:
<head>
......
<script type="text/javascript">
function setClasses(){
document.getElementsByClassName("gchoice_35_0")[0].onclick = sedanShow;
document.getElementsByClassName("gchoice_22_0")[0].onclick = sedanShow;
document.getElementsByClassName("gchoice_34_0")[0].onclick = sedanShow;
document.getElementsByClassName("gchoice_34_1")[0].onclick = suvShow;
document.getElementsByClassName("gchoice_35_1")[0].onclick = suvShow;
document.getElementsByClassName("gchoice_22_1")[0].onclick = suvShow;
document.getElementsByClassName("gchoice_22_2")[0].onclick = vanShow;
document.getElementsByClassName("gchoice_35_2")[0].onclick = vanShow;
document.getElementsByClassName("gchoice_34_2")[0].onclick = vanShow;
}
function sedanShow(){
document.getElementById("sedan").style.display="inline"
document.getElementById("suv").style.display="none"
document.getElementById("van").style.display="none"
}
function suvShow(){
document.getElementById("sedan").style.display="none"
document.getElementById("suv").style.display="inline"
document.getElementById("van").style.display="none"
}
function vanShow(){
document.getElementById("sedan").style.display="none"
document.getElementById("suv").style.display="none"
document.getElementById("van").style.display="inline"
}
window.onload = setClasses;
</script>
……
【问题讨论】:
-
此代码出现在您页面的什么位置?您介意发布一个不起作用的完整 HTML sn-p 吗?
-
我相信 setClasses 正在运行,这不是问题。我敢打赌,如果您在 setClasses 函数中设置警报,它就会触发。我相信这可能是您设置 onclick 属性的方式。 IE 要求将其设置为字符串,而 firefox 要求将其设置为函数。 JQuery 和 YUI 通过提供事件实用程序来帮助缓解这种情况。我建议研究这些框架,因为它们有助于减少您必须处理的许多跨浏览器怪癖。
-
还有什么设置 window.onload 会覆盖此代码吗?
-
@shahmeer navid:为什么要为
onload事件分配一个字符串?您应该分配函数window.onload = setClasses;。 -
@shahmeer,onload 是否正在其他地方使用?简单的问题。 :)
标签: javascript function call onload