Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
未定义函数-jQuery/Javascript_Javascript_Jquery - Fatal编程技术网

未定义函数-jQuery/Javascript

未定义函数-jQuery/Javascript,javascript,jquery,Javascript,Jquery,又一个倒霉的家伙。。。 好的,我到处都找了,试图找出如何使用jQuery/JavaScript函数,我希望这只是我语法上的一个错误,但下面是我的代码: <script type="text/javascript"> $(function() { function loadNext(choice) { $("#thequestion").load("question.php", { ans: choice, id: "<?php echo

又一个倒霉的家伙。。。 好的,我到处都找了,试图找出如何使用jQuery/JavaScript函数,我希望这只是我语法上的一个错误,但下面是我的代码:

<script type="text/javascript">

$(function()
{
        function loadNext(choice) {
            $("#thequestion").load("question.php", { ans: choice, id: "<?php echo $row['id']; ?>", nextId: "<?php echo $nextQuestionId; ?>" } );

            $("#graph").load("graph.php", { id:"<?php echo $row['id']; ?>", nextId: "<?php echo $nextQuestionId; ?>" } );
            alert("loadNext activated");
        }

});
</script>
然后,我使用onclick事件调用loadNextchoice函数,如下所示: onclick=loadNextYorN

在此之后,我得到一个“loadNext未定义”错误

我愿意接受的答案是:你不学习!你真傻


谢谢。

您刚才定义的loadNext函数是匿名函数作用域的本地函数。如果要全局访问它,请在onready处理程序外部全局定义它。

因为函数中有函数

 (function()
{
        function loadNext(choice) {
            this is bad
        }

function loadNext(choice) {
            this is good
        }

onclick="loadNext()"

没问题

为什么不把loadNext函数放在$function{}之外呢

外部$function。。您在第一行限制了您的范围-loadNext函数仅在该块内可用,并且将在其外部未定义

解决这个问题的简单方法是在$function之外定义loadnext函数。。但这是错误的,原因有两个:

这使得函数在整个应用程序中都是全局的,而污染全局名称空间是不允许的。 像onclick这样的内联javascript通常是不好的——这模糊了表示和逻辑之间的界限,使调试变得很痛苦。 要解决这个问题,请使用jquery绑定事件来附加事件处理程序;i、 e


$myfancybutton,单击函数{loadNextchoice};在您的$function中。。因为loadNext不在全局范围内,所以将其设置为bloc。您可以在全局范围内定义它,或者使用更好的解决方案来绑定您的单击事件。

谢谢您的提示!我很感激。