Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数未被调用_Javascript_Function_Call_Onload - Fatal编程技术网

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

我有一些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>

......
函数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...
});