2014-01-21 40 views
2

我想讓我的函數實現我的javascript功能,是每隔一秒隨機減去或添加(一個隨機數)到div中保存的數字。JavaScript隨機每秒添加/減去一個數字

這是我到目前爲止。

它不起作用,它似乎將數字追加到div值(100)的末尾,也沒有考慮到我希望它隨機添加或減少(它只是增加此刻)

setInterval(function(){ 
     random = (Math.floor((Math.random()*15)+1)); 
     currentnumber = document.getElementById('number'); 

     document.getElementById('number').innerHTML = currentnumber + random; 

    }, 1000); 
+0

'currentnumber'大概應該是'.innerHTML'而不是元素本身。 – bozdoz

+0

也許你可以嘗試currentnumber = parseInt(document.getElementById('number')。innerHTML); ? (編輯:是的,innerHTML是你所追求的,否則你正在操縱DOM對象) –

+1

對於這個記錄,這個問題明顯是在聲明變量時丟失了'innerHTML'。 – bozdoz

回答

7

解析當前值作爲一個整數,然後做一套的Math.random,並用它來決定陰性或陽性。最後,你需要使用currentNumber的innerHTML,而不是整個節點。所以,這樣的事情應該工作:

setInterval(function(){ 
    random = (Math.floor((Math.random()*15)+1)); 
    var plusOrMinus = Math.random() < 0.5 ? -1 : 1; 
    random = random * plusOrMinus; 
    currentnumber = document.getElementById('number'); 

    document.getElementById('number').innerHTML = parseInt(currentnumber.innerHTML) + random; 

}, 1000); 

WORKING FIDDLE

+0

我試過在JS小提琴,它說NaN? –

+0

發表小提琴,我敢肯定,你使用的代碼多於你發佈的代碼 – Rooster

+0

http://jsfiddle.net/cT7a9/1/ - 謝謝你的方式:) –

0

也許嘗試這樣的事:

setInterval(function(){ 
    random = (Math.floor((Math.random()*15)+1)); 
    currentnumber = parseInt(document.getElementById('number').innerHTML); 

    document.getElementById('number').innerHTML = currentnumber + random; 
}, 1000); 

currentnumber變量需要獲得元素的innerHTML,然後解析字符串轉換成整數。

jsFiddle

1

currentnumber是一個DOM對象,你不能添加到一個數字。

var div = document.getElementById('number'); 
div.innerHTML = Number(div.innerHTML) + 3; 

通知您得到divinnerHTML,轉換是一個​​,增加你的隨機數,然後設置你的div.innerHTML到新的價值。

http://jsfiddle.net/9LqQG/1/