【发布时间】:2012-12-14 23:10:00
【问题描述】:
所以我有这个代码:http://jsfiddle.net/7rGSb/1/
var volumeDiv = document.getElementById("volumeNumber");
var volumeOld = 8;
var volumeNew = 37;
var timeNew = (1000 / (volumeNew - volumeOld));
changeVolume();
function changeVolume() {
volumeDiv.innerHTML = volumeOld;
volumeOld++;
if (volumeOld <= volumeNew) setTimeout(changeVolume, timeNew);
};
这是一个在 1 秒内从 8 变为 37 的字符串。它工作正常。
但是,当我尝试将其放入单击事件处理程序 (http://jsfiddle.net/wH2qF/1/) 时,它停止工作:
$(function() {
$("#Volume").click(function() {
setTimeout(triggerVolumeChange, 4000);
function triggerVolumeChange() {
var volumeDiv = document.getElementById("volumeNumber");
var volumeOld = 8;
var volumeNew = 37;
var timeNew = (1000 / (volumeNew - volumeOld));
changeVolume();
function changeVolume() {
volumeDiv.innerHTML = volumeOld;
volumeOld++;
if (volumeOld <= volumeNew) setTimeout(changeVolume, timeNew);
};
};
});
});
知道为什么吗?
是因为我在另一个函数中调用changeVolume(); 吗?如果是这样,我怎样才能使该函数工作而不必调用它?
【问题讨论】:
-
为什么会有嵌套函数??
-
@Sushanth--我的猜测是范围界定或意外。函数一直是嵌套的,尽管有时它并不像这样明显。
-
我对 JS 很陌生,所以我为代码的结构方式道歉......也许这就是它不起作用的原因......关于如何修复它的任何想法?在用户单击按钮后 4 秒,我基本上需要该字符串从 8-37 变为...(它用于我正在设计的应用程序的模拟环境)
-
@DaveNewton .. 是的,没错.. 但我看不出有理由将函数嵌套在 OP 的场景中
标签: javascript