【问题标题】:Uncaught ReferenceError: 'functionName' not defined未捕获的 ReferenceError: 'functionName' 未定义
【发布时间】:2014-02-24 16:40:21
【问题描述】:

所以我检查了我的 .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 控制台中不断出现错误提示:

未捕获的引用错误:未定义函数名

【问题讨论】:

  • 仅供参考 jQuery 1.3.1 是古老的
  • @pointy,系统本身就很古老。我希望这都是我的哈哈...
  • 好的,但请注意,较新的浏览器可能会出现问题,包括 IE9+。

标签: javascript jquery


【解决方案1】:

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 已经非常过时了,它缺少许多有用且重要的功能,这些功能在以后的版本中得到了支持。

【讨论】:

  • 感谢使用 {.} 和 {#}。我每天都在学习新事物。 :)
  • 可以在这里有函数 functionName { 和一个 ajax 调用} 吗?在这种情况下,有一个函数在调用时也会执行 ajax 调用?谢谢。
  • 是的,当然。此外,你可以通过这个线程:stackoverflow.com/questions/14220321/… 如果你打算从你的 ajax 调用中返回一个值
【解决方案2】:

不要将你的函数包装在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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      在 onLoad 中调用 functionName 时,该函数尚未在文档中。 试着把函数functionName 拿出来。 例如,

      <script language="JavaScript" > 
      
      "some content here ...." 
      
      function functionName() {
        your function
      }
      
      </script>
      

      【讨论】:

        【解决方案5】:

        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
            } 
          );
        

        【讨论】:

          猜你喜欢
          • 2019-09-07
          • 2023-01-23
          • 1970-01-01
          • 2016-11-03
          • 2011-01-05
          • 2016-01-02
          • 2013-10-06
          • 2016-12-17
          相关资源
          最近更新 更多