我有一些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代码段:
<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>
......
答案 0 :(得分:2)
你总是可以使用JQuery
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
setClasses();
});
</script>
修改
示例JQuery事件重构:
$(".gchoice_35_0").click(function(){
//Handler Code...
});
答案 1 :(得分:1)
我将给出一个使用YUI的答案,随意使用或不使用,但我认为框架是一个好主意,以帮助加快JavaScript开发。因此,请将以下内容添加到您的页面
<script type="text/javascript" src="http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>
然后代替window.onload = someFn(因为这可能是IE中的古怪,惊喜),请执行以下操作
YAHOO.util.Event.onDOMReady(function () {
setClasses();
});
然后在你的set classes函数中,执行以下操作
function setClasses(){
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_35_0")[0], 'click', sedanShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_22_0")[0], 'click', sedanShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_34_0")[0], 'click', sedanShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_34_1")[0], 'click', suvShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_35_1")[0], 'click', suvShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_22_1")[0], 'click', suvShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_22_2")[0], 'click', vanShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_35_2")[0], 'click', vanShow);
YAHOO.util.Event.on(document.getElementsByClassName("gchoice_34_2")[0], 'click', vanShow);
}
这应该可以解决问题。