2015-11-30 64 views
1

我試圖創建一個函數,每5秒產生一個數字,但是當我使用這些函數時有一個問題,因爲我想在這個數字上有animateNumber()函數。我收到此錯誤信息:setInterval + Random Number

Uncaught ReferenceError: x is not defined

的循環工作只是不知道如何解決這個錯誤。感謝您的幫助

function myInterval() { 
    var x = Math.round(Math.random() * 5000) + 1; 
} 

var timeoutId = setTimeout(ref, 100); 
var intervalId = setInterval(ref, 5000); 
var intervalId = setInterval(myInterval, 5000); 

// ANIMATED NUMBER 

function ref() { 
    $("#budget-left").animateNumbers(x); 
} 

回答

1

x變量在myInterval函數定義的,所以裏面ref()人跡罕至 - 因此錯誤。你需要提高它的作用範圍:

var x = 0; 

function myInterval() { 
    x = Math.round(Math.random() * 5000) + 1; 
} 

var timeoutId = setTimeout(ref, 100); 
var intervalId = setInterval(ref, 5000); 
var intervalId = setInterval(myInterval, 5000); 

// ANIMATED NUMBER 

function ref() { 
    $("#budget-left").animateNumbers(x); 
} 

還要注意的是邏輯會更有意義,如果你有一個計時器,調用一個函數,既產生數,然後顯示出來。試試這個:

var intervalId = setInterval(function() { 
    var randomNumber = Math.round(Math.random() * 5000) + 1; 
    $("#budget-left").animateNumbers(randomNumber); 
}, 5000); 
+0

你是對的,謝謝你..我忘了這個 – liborza

+0

沒問題,很樂意幫忙。 –

0

範圍是問題。

 var x =0; 
    function myInterval() { 
    x = Math.round(Math.random() * 5000) + 1; 
    } 

    var timeoutId = setTimeout(ref, 100); 
    var intervalId = setInterval(ref, 5000); 
    var intervalId = setInterval(myInterval, 5000); 

    // ANIMATED NUMBER 

    function ref() { 
     $("#budget-left").animateNumbers(x); 
    }