功能没有定义? [复制]

Posted

技术标签:

【中文标题】功能没有定义? [复制]【英文标题】:Function is not defined? [duplicate] 【发布时间】:2015-01-08 18:01:32 【问题描述】:

我有这个代码:(与问题无关的片段)

$(function() 

mins = 0;  //Set the number of minutes you need
//secs = 0;

    function Decrement(mins)
        var secs = mins * 60;
        var currentSeconds = 0;
        var currentMinutes = 0;
        if(currentSeconds <= 9) currentSeconds = "0" + currentSeconds; 
        secs--;
        document.getElementById("commercial").innerhtml = "Please wait "+currentMinutes + ":" + currentSeconds; //Set the element id you need the time put into.
        if(secs !== -1) alert("Done!"); 
    

    function runCommercial(time)
        $('#commercial').html('Plase wait 8:00');
        $('#commercial').attr("disabled", "disabled");
        mins = 8;
        setInterval('Decrement(8)',1000);
    

  $('#commercial').click(function()
    runCommercial(30);
  );
);

每当我单击商业按钮时,按钮文本都会按原样设置为 8:00,尽管它不会倒计时,而是在 Firefox 的开发控制台中给我“Decrement() 未定义”。为什么会发生这种情况,我该如何解决?

谢谢。

【问题讨论】:

【参考方案1】:

发生这种情况是因为 String 'Decrement(8)' 在全局命名空间中被 evaluated,而不是在您的 IIFE 闭包下。

改变

setInterval('Decrement(8)',1000);

setInterval(function () Decrement(8);, 1000);

导致eval 风格的代码解释被认为是不好的做法,尝试始终将函数传递给 setTimeoutsetInterval 等。

【讨论】:

我还要补充一点,如果减量不需要参数(8)。你可以调用 setInterval(Decrement,1000);

以上是关于功能没有定义? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

//没有为类型'Object'定义运算符'[]'。? [复制]

函数中都有哪些功能,但存储过程中没有? [复制]

使用javascript将自定义json对象复制到剪贴板

....没有定义无参数构造函数? [复制]

如何自定义键盘的功能

有没有办法让这个功能更好? [复制]