功能没有定义? [复制]
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)'
在全局命名空间中被 eval
uated,而不是在您的 IIFE 闭包下。
改变
setInterval('Decrement(8)',1000);
到
setInterval(function () Decrement(8);, 1000);
导致eval
风格的代码解释被认为是不好的做法,尝试始终将函数传递给 setTimeout 和 setInterval 等。
【讨论】:
我还要补充一点,如果减量不需要参数(8)。你可以调用 setInterval(Decrement,1000);以上是关于功能没有定义? [复制]的主要内容,如果未能解决你的问题,请参考以下文章