Каждую 1 секунду увеличивайте значение случайным числом, используя десятичные числа

1

Поэтому я пытаюсь увеличить значение числа с интервалом в 1 секунду с десятичным числом между (0,01 и 0,05), и я не могу понять этого.

Единственное, что он делает, это показать мне числа от 0,01 до 0,05 вместо того, чтобы добавлять их в целые числа.

setInterval (function myFunction() {
  var number = 0;
  document.getElementById("computerScore").innerHTML = number + 
  Math.floor((Math.random() * 5) + 1)/100;
}, 1000)

<b>computer score:</b><p id="computerScore">0</p>
Теги:
string
dom
numbers
setinterval

5 ответов

1
Лучший ответ

Ваша проблема заключается в том, что вы устанавливаете number до 0 в каждом исполнении, тогда как оно должно быть текущим значением.

Вам нужно присвоить Number(document.getElementById("computerScore").textContent), чтобы он продолжал обновление с добавленным случайным числом.

Обратите внимание, что я использовал textContent который рекомендуется здесь, поскольку он содержит только текстовое содержимое элемента, избегающего HTML-элементов.

setInterval (function myFunction() {
  var number = Number(document.getElementById("computerScore").textContent);
  document.getElementById("computerScore").textContent= number + 
  Math.floor((Math.random() * 5) + 1)/100;
}, 1000)

Демо - версия:

setInterval (function myFunction() {
  var number = Number(document.getElementById("computerScore").textContent);
  document.getElementById("computerScore").textContent = number + 
  Math.floor((Math.random() * 5) + 1)/100;
}, 1000)
<b>computer score:</b><p id="computerScore">0</p>
  • 0
    Спасибо, это работает! Действительно проницательный, не понял, что мне нужно присвоить номер документу, но теперь это имеет смысл
  • 0
    @karagkalex Да, мы использовали конструктор Number чтобы анализировать число из строки HTML.
1

Вам нужно объявить номер за пределами setTimeout:

var number = 0;
setInterval (function myFunction() {
  number = number + 
  Math.floor((Math.random() * 5) + 1)/100;
  document.getElementById("computerScore").innerHTML = number;
}, 1000)

JSFiddle

  • 0
    Спасибо, это сработало! Не понял, что мне нужно объявить это вне функции, теперь имеет смысл
1

Вы устанавливаете number 0 при каждом вызове функции, вы должны определить number за пределами интервала

var number = 0;
setInterval(function myFunction() {
    document.getElementById("computerScore").innerHTML = number +
        Math.floor((Math.random() * 5) + 1) / 100;
}, 1000)
  • 0
    Спасибо, это работает!
1

Вам нужно получить предыдущее значение из вашего счета и добавить к нему свое случайное число:

PS: Я добавил .toFixed(2) чтобы ограничить результат двумя десятичными знаками.

let score = document.getElementById("computerScore");

setInterval (function myFunction() {
  score.innerHTML = (+score.innerHTML + Math.floor((Math.random() * 5) + 1)/100).toFixed(2);
}, 1000)
<b>computer score:</b><p id="computerScore">0</p>
  • 0
    Спасибо, это работает! Действительно полезно знать о .toFixed
1

вы можете попробовать что-то вроде этого. Вы забыли установить число до 0. Затем вам нужно увеличить свой номер со случайным значением, которое вы получаете.

https://codepen.io/anon/pen/dgJpep

JS :


  var number = 0;

function check(){

  setInterval(function(){
    number = number + Math.floor((Math.random() * 5) + 1)/100;
  }, 3000);
}

check();

setInterval(function(){
  document.getElementById('computerScore').innerHTML = number;
});

Дайте мне знать, если это сработает для вас!

  • 0
    Спасибо, это работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню