2011-03-20 40 views
1
(function() { 
    var count = { 
     digit: 0, 
     increment: function() { 
      var interval = setInterval(function() { 
       if (++count.digit == 10) { 
        clearInterval(interval); 
        count.decrement(); 
       } 
       var update = document.getElementById("liveUpdate"); 
       update.innerHTML = count.digit; 
      }, 500); 
     }, 
     decrement: function() { 
      var interval = setInterval(function() { 
       if (--count.digit == -1) { 
        clearInterval(interval); 
       } 
      }, 500); 
     } 
    }; 
    count.increment(); 
})(); 

它停下來,但它不會停下來?可能是什麼問題呢?爲什麼這個簡單的JavaScript增量和減量方法不起作用?

+1

你的代碼是正確的,但你忘了在'update'元素顯示'digit'。 – jerone 2011-03-20 11:33:57

回答

4

您的decrement函數從不更新任何地方的輸出。變量正在關閉,但不顯示在屏幕上。

嘗試(或檢查相應的JSFiddle):

(function() { 
    var update = document.getElementById("liveUpdate"); 
    var count = { 
     digit: 0, 
     increment: function() { 
      var interval = setInterval(function() { 
       if (++count.digit == 10) { 
        clearInterval(interval); 
        count.decrement(); 
       } 
       update.innerHTML = count.digit; 
      }, 500); 
     }, 
     decrement: function() { 
      var interval = setInterval(function() { 
       if (--count.digit == -1) { 
        clearInterval(interval); 
       } 
       update.innerHTML = count.digit; 
      }, 500); 
     } 
    }; 
    count.increment(); 
})(); 
2

它不是一個錯誤,它是一個功能;-)。 setInterval()以給定間隔(500 ms)在循環中運行給定函數。有關詳細信息,請參閱此article

相關問題