【问题标题】:I keep receiving Uncaught TypeError: Object [object global] has no method error during function call我不断收到 Uncaught TypeError: Object [object global] has no method error during function call
【发布时间】:2014-03-25 12:06:39
【问题描述】:

我创建了一个函数,可以在第三次调用时执行一些独特的操作。在这种情况下,提醒增加的数字。但是,当尝试从另一个函数调用此函数时: “MyFunction();”,我得到 Uncaught TypeError: Object [object global] has no method 'MyFunction'。你能告诉我我做错了什么吗?

var counter = 0;
var num = 0;

function = MyFunction() {
// increment outside counter
counter++;
if (counter === 3) {
    // do something every third time
    num++;
    alert('the new number is: ' + num);
    // reset counter
    counter = 0;
 }
}

我也尝试删除 = 符号,您可以在此处看到 http://jsfiddle.net/DN3yC/6/ 它不起作用。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    LIVE DEMO

    只需删除 = 符号 function MyFunction() { 并确保在您的小提琴中 JS <script> 位于正确的位置请参阅下面的其他说明

    例子:

    var element = document.getElementById('button');
    var counter = 0;
    var num = 0;
    
    function MyFunction() {
       counter = ++counter % 3; // loop count
       if ( !counter ) {
          num++;
          alert('the new number is: ' + num);
       }
    }
    
    
    //On click:
    element.addEventListener('click', MyFunction, false);
    

    你的新小提琴:http://jsfiddle.net/DN3yC/7
    您的旧版本无法正常工作,因为您没有将No Wrap - in body 用于小提琴中的JS。 (见左上角的选项面板)

    所以基本上你需要把你的<script>标签放在你的</body>结束标签之前,以确保DOM在元素操作之前准备好并被JavaScript解析。

    【讨论】:

    • @Brandon 添加了一个演示
    • @Brandon 你的新小提琴:jsfiddle.net/DN3yC/7 你的旧小提琴不起作用,因为你没有No Wrap - in body你的小提琴中的JS。 (见左上角的选项面板)
    • 好的,谢谢。我已经看到了,现在它可以工作了,但是它在我的项目中仍然不起作用。我收到 Uncaught TypeError: Object [object global] has no method 'MyFunction'。在控制台中。
    • @Brandon 这可能意味着您没有删除 = 或者您正在使用超出范围的 MyFunction
    • 不,它很有帮助,我现在觉得很愚蠢 :) 实际上我上面的例子是假设的。我的实际代码是我的问题所在,但我感到困惑并认为它与函数有关。
    【解决方案2】:

    我觉得语法不对,试试

    var foo = Myfuntion(); 要么 var foo = new MyFuntion();

    取决于 MyFuntion() 是什么。

    【讨论】:

      【解决方案3】:

      应该是:

      var MyFunction=function () {
          // increment outside counter
          counter++;
          if (counter === 3) {
              // do something every third time
              num++;
              alert('the new number is: ' + num);
              // reset counter
              counter = 0;
           }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 1970-01-01
        • 2013-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多