2014-01-21 4 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); ? (edit: yes innerHTML - это то, что вам нужно, иначе вы манипулируете объектом DOM) –

+1

Для записи этот вопрос был явным недосмотром отсутствующего 'innerHTML' при объявлении переменной. – bozdoz

ответ

7

анализировать текущее значение как целое число, а затем сделать еще один Math.random и использовать его, чтобы решить, отрицательным или положительным. Наконец, вам нужно использовать 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 Fiddle, и это говорит NaN? –

+0

опубликуйте скрипку, я уверен, что вы используете больше кода, чем то, что вы разместили – Rooster

+0

http://jsfiddle.net/cT7a9/1/ - Спасибо, кстати :) –

1

.innerHTML возвращает вам строку, вам необходимо разобрать в целое число, чтобы выполнить сложение или вычитание. Посмотрите на ряд методов, перечисленных в следующей SO вопрос

How do I convert a string into an integer in JavaScript?

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; 

Обратите внимание, что вы получаете innerHTML из div, преобразования, что в Number(), добавив ваше случайное число к нему, а затем установить ваш div.innerHTML к новому значению.

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

Смежные вопросы