未捕获的ReferenceError:未定义myFunction

时间:2013-03-02 05:57:45

标签: javascript

给出错误。我已将代码放在</body>之前。仍然得到错误。

<form action="" method="get" id="searchform" >
<input name="q" type="text" id="search" size="32" maxlength="128" class="txt">
<input type="button" id="hit" value="Search" onclick="myFunction();return false" class="btn">   
</form>

JS,

<script type="text/javascript">
    var nexturl = "";
    var lastid = "";
    var param;
    $(document).ready(function () {
        function myFunction() {
            param = $('#search').val();
            alert("I am an alert box!");
            if (param != "") {
                $("#status").show();
                var u = 'https://graph.facebook.com/search/?callback=&limit=100&q=' + param;
                getResults(u);
            }
        }
        $("#more").click(function () {
            $("#status").show();
            $("#more").hide();
            pageTracker._trackPageview('/?q=/more');
            var u = nexturl;
            getResults(u);
        });
    });
</script>

4 个答案:

答案 0 :(得分:9)

您无法在myFunction之后放置onclick。当看到onclick时,myFunction没有定义。

将JavaScript放在<head>标记中。此外,将功能移到ready()

之外

像这样:

<script type="text/javascript">
var nexturl ="";
var lastid ="";
var param;

function myFunction() {
    param = $('#search').val();
    alert("I am an alert box!");
    if (param != "") {
        $("#status").show();
        var u = 'https://graph.facebook.com/search/?callback=&limit=100&q='+param;
        getResults(u);
        }
}

$(document).ready(function() {

  $("#more").click(function () { 

    $("#status").show();
    $("#more").hide();  
    pageTracker._trackPageview('/?q=/more');
    var u = nexturl;
    getResults(u);
  });

});
</script>
</head>
<body>
...

答案 1 :(得分:3)

直接将myFunction保留在脚本标记中

 i.e
   <script>

function myFunction() {
  .....  
}
 </script>

答案 2 :(得分:1)

来自jQuery docs

  

传递给.ready()的处理程序保证在DOM准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。

因此,在您的onclick建立之后才会创建您的功能。因此无法找到该功能。您需要将其移出$(document).ready(function(){})

答案 3 :(得分:0)

你必须在$document.ready之外移动这个功能,然后你将有两个选择:第一个移动到<head>或第二个移动它在关闭$document.ready括号之前。对函数myFunction(){alert("inside my function");};

使用此类声明