2012-01-22 39 views
1

與往常一樣,如果有人能夠幫助我使用這段代碼,我將非常感激。在javaScript上使用setInterval

我有下面的代碼行:

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()」的參數。

我已經嘗試了所有我能想到的,我不能得到它的工作。
任何想法我錯過或做錯了什麼?

謝謝大家。

+1

請給出一個'嵌套函數內代碼' – Joe

+0

您沒有將句柄傳遞給'clearInterval'的例子。 –

+0

嵌套代碼是一個簡單的函數,它需要檢索一個整數,這就是我用作極限變量的值。 真的沒有別的東西。 – jnkrois

回答

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(或東西像那樣),但是你沒有顯示足夠的代碼。

+0

非常感謝你,它現在工作。我認爲有一些問題與範圍有關,但它逃脫了我。 謝謝。 – jnkrois

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); 
+0

非常感謝你 – jnkrois