所以我有這樣的代碼: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串。它工作正常。
然而,當我試圖把它變成一個click事件處理(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非常陌生,所以我爲代碼的結構方式而道歉......也許這就是爲什麼它不工作......關於如何解決它的任何想法?我基本上需要這個字符串在用戶點擊按鈕後的8到4秒內完成(這是爲了我正在設計的應用程序的模擬環境) – ttothec