与往常一样,如果有人能帮我一点点,我会非常感激。
我有以下几行代码:
var count = 0;
var limit = 2000;
function liveCount(){
var increment = count + 10;
count = increment;
if(count <= limit){
document.getElementById('showCount').textContent=count;
}else{
clearInterval();
}
}
var counter = setInterval('liveCount()', 10);
这段代码的作用是模拟计时器从0到X的计数器。
它独立使用时效果很好,它开始计数并以10毫秒的间隔更新计数,直到达到极限,然后停止。
到目前为止一切顺利。
我的问题是,当我将此代码嵌套在另一个函数中时,这个函数将提供“计数和限制”变量的值,我得到一个错误,说“liveCount()”没有定义,参考“setInterval()”的参数。
我已经尝试了所有我能想到的东西,但我无法让它发挥作用 有什么想法我错过了什么或做错了什么?
谢谢大家。
答案 0 :(得分:1)
也许这就是你要找的......
function liveCount(count, limit){
var increment = count + 10;
count = increment;
if(count <= limit){
document.getElementById('showCount').textContent=count;
}else{
clearInterval(counter);
}
}
function wrapper() {
// calculate count and limit
count = 0;
limit = 2000;
liveCount(count, limit);
}
var counter = setInterval(wrapper, 10);
答案 1 :(得分:1)
正如您所写,liveCount
必须是全局window
对象的属性。将此代码放在函数中将liveCount
定义为该函数的本地代码,这意味着window.liveCount
不存在。
不要传递setInterval
代码来执行;相反,给函数提供一个引用,就像这样(注意没有引号):
var counter = setInterval(liveCount, 10);
完整示例:
function someOtherFunc(limit) {
var count = 0;
function liveCount() {
var increment = count + 10;
count = increment;
if (count <= limit) {
document.getElementById('showCount').textContent = count;
} else{
clearInterval();
}
}
var counter = setInterval(liveCount, 10);
}
您可能还想返回counter
(或类似内容),但您没有显示足够的代码以确定。
答案 2 :(得分:0)
将你的调用放在一个闭包中。
var counter = setInterval(function() {
liveCount();
}, 10);