未捕获的ReferenceError:未定义'functionName'

时间:2014-02-24 16:40:21

标签: javascript jquery

所以我在.jsp文件中检查了我的脚本标签:

<script type="text/javascript" src="javascript/jquery-1.3.1.min.js"></script>

<script language="JavaScript" > "some content here ...." </script>

以及同一个.jsp文件中的下面我有一个标记:

<body BGCOLOR="white" text="black" link="blue" vlink="red" onLoad="functionName();enableBackButton();">

但是,在我的JavaScript文件中,我有:

$(document).ready(function(){
$('current').click(function(event){

    function functionName() { ....... }

我在Chrome控制台中不断收到错误消息:

未捕获的ReferenceError:未定义functionName

5 个答案:

答案 0 :(得分:4)

functionName()移出$(document).ready(function(){

function functionName() { ....... }

$(document).ready(function(){
    $('.current').click(function(event){
        functionName();
    });
});

此外,您需要使用.按类定位元素,或#id

定位元素

因此$('.current')会选择class="current"的任何元素,而$('#current')会选择id="current"

的元素

最后一点是更新您的jQuery版本,因为1.3.1已经过时了,并且缺少许多有用且重要的功能,这些功能在以后的版本中都有支持。

答案 1 :(得分:3)

不要将您的函数包装在DOM ready($(document).ready(function(){)处理程序中。因为它是一个匿名函数,所以functionName()函数有local scope。所以你不能在DOM ready之外调用它}

阅读What is the scope of variables in JavaScript?


http://api.jquery.comhttp://learn.jquery.com

答案 2 :(得分:2)

function functionName() {应在$(document).ready(function(){之外定义,例如

function functionName() {...}
$(document).ready(function(){...});

如果你在document.ready内定义它,那么它的范围将限制在这个函数中。

只有您可以在functionName()$(document).ready(内部调用

时定义
$(document).ready(function(){
   function functionName() {...}
      // but in your case below function 
      // is calling from body when its loaded
      functionName(); //from here you can call
    } 
  );

答案 3 :(得分:2)

在onLoad中调用functionName时,该函数尚未出现在文档中。 尝试将函数functionName输出。 例如,

<script language="JavaScript" > 

"some content here ...." 

function functionName() {
  your function
}

</script>

答案 4 :(得分:2)

移动函数将是修复它的一种方法,但另一种方法是简单地从“就绪”处理程序调用该函数,或者如果从“加载”处理程序加载所有页面内容真的很重要:< / p>

$(document).ready(function() {
  function functionName() {
    // whatever
  }

  functionName();
});

不必要地污染全局命名空间通常是件坏事。