函数未定义-jQuery/Javascript

Function not defined - jQuery/Javascript

本文关键字:Javascript -jQuery 未定义 函数      更新时间:2023-09-26

又是一个倒霉蛋。。。好吧,所以我到处寻找,试图找出如何制作这个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事件调用loadNext(choice)函数,如下所示:onclick="loadNext(YorN);"

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

我会接受的答案包括:"你不学习!"answers"你很傻。"

这里有一个类似的问题。

谢谢。

您刚才定义的loadNext函数是匿名函数作用域的本地函数。如果您想全局访问它,那么就全局定义它(在onready处理程序之外)。

第一行的外部"$(function().."限制了您的范围-loadNext函数仅在此块内可用,在块外将不定义。

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

  1. 这使得函数在整个应用程序中具有全局性,并且污染全局命名空间是不允许的
  2. 像"onclick"这样的内联javascript通常是不好的——这模糊了表示和逻辑之间的界限,并使调试变得困难

为了解决这个问题,可以使用jquery绑定事件来附加事件处理程序;即

$("#myfancybutton",单击(function(){loadNext(choice)});在$(function()..)中集团

因为函数中有一个函数

 (function()
{
        function loadNext(choice) {
            this is bad
        }
function loadNext(choice) {
            this is good
        }
onclick="loadNext()"

无问题

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

因为loadNext不在全局范围内。您可以在全局范围内定义它,或者更好的解决方案是使用.click()绑定您的点击事件。