Javascript 函数未被调用
我有一些javascript应该在窗口加载后运行,但由于某些原因,它从未运行过 这是我的密码:Javascript 函数未被调用,javascript,function,call,onload,Javascript,Function,Call,Onload,我有一些javascript应该在窗口加载后运行,但由于某些原因,它从未运行过 这是我的密码: function setClasses(){ document.getElementsByClassName("gchoice_35_0")[0].onclick = sedanShow; document.getElementsByClassName("gchoice_22_0")[0].onclick = sedanShow; document.ge
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>
......
函数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;
}
函数sedanShow(){
document.getElementById(“sedan”).style.display=“inline”
document.getElementById(“suv”).style.display=“无”
document.getElementById(“van”).style.display=“无”
}
函数suvShow(){
document.getElementById(“sedan”).style.display=“无”
document.getElementById(“suv”).style.display=“inline”
document.getElementById(“van”).style.display=“无”
}
函数vanShow(){
document.getElementById(“sedan”).style.display=“无”
document.getElementById(“suv”).style.display=“无”
document.getElementById(“van”).style.display=“inline”
}
window.onload=setClasses;
。。。。。。
我将给出一个使用YUI的答案,不管您是否可以使用它,但我认为框架是帮助加快javascript开发的一个好主意。因此,将以下内容添加到您的页面中
<script type="text/javascript" src="http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>
然后在set class函数中,执行以下操作
YAHOO.util.Event.onDOMReady(function () {
setClasses();
});
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);
}
这应该可以解决问题。您可以随时使用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>
此代码显示在您的页面上的什么位置?你介意发布一个不起作用的完整HTML代码段吗?我相信setClasses正在运行,这不是问题所在。我敢打赌,如果你在setClasses函数中设置了一个警报,它就会触发。我相信这可能是您设置onclick属性的方式。IE要求将其设置为字符串,而firefox要求将其设置为函数。JQuery和YUI通过提供事件实用程序帮助缓解了这一问题。我建议您研究这些框架,因为它们有助于减少您必须处理的许多跨浏览器问题。是否还有其他设置window.onload覆盖此代码的内容?@shahmeer navid:为什么要为
onload
事件分配字符串?您应该分配函数window.onload=setClasses代码>@shahmeer,是否在其他地方使用onload?简单问题:)很好,JQuery也是一个很好的解决方案,您可以通过在setClasses方法中显示JQuery事件处理来详细说明您的答案吗?我认为这会给你的答案增加一些价值。
$(".gchoice_35_0").click(function(){
//Handler Code...
});