簡體   English   中英

函數未定義-jQuery / Javascript

[英]Function not defined - jQuery/Javascript

另一個不幸的菜鳥...好吧,所以我到處尋找並嘗試如何制作此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”錯誤。

我會接受的答案包括:“你不懂!” 和“你很傻。”

這是一個類似的問題。

謝謝。

您剛剛定義的loadNext函數位於匿名函數范圍的本地。 如果要全局訪問它,則全局定義它(在onready處理程序之外)。

您在第一行中使用的外部“ $(function()..””限制了您的范圍-loadNext函數僅在此塊內可用,並且在該塊外未定義。

解決此問題的簡單方法是僅在$(function()..)塊之外定義“ loadnext”函數,但這是錯誤的,原因有兩個:

  1. 這使得函數在整個應用程序中都是全局的,並且污染全局名稱空間是不行的。
  2. 內聯javascript(例如“ onclick”)通常是不好的-這模糊了表示和邏輯之間的界線,並使調試變得很痛苦。

為了解決這個問題,請使用jquery綁定事件來附加事件處理程序;

$(“#myfancybutton”,click(function(){loadNext(choice)});在您的$(function()..)內部

因為你在一個函數里面有一個函數

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

function loadNext(choice) {
            this is good
        }

onclick="loadNext()"

沒有問題

為什么不將loadNext函數放在$(function(){})之外呢?

因為loadNext不在全局范圍內。 您可以在全局范圍內定義它,甚至更好的解決方案是使用.click()綁定您的click事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM