Каждую 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>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
70
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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>

Спасибо, это работает! Действительно полезно знать о .toFixed

karagkalex 16.10.2018 12:53

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

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

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

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

JSFiddle

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

karagkalex 16.10.2018 12:52

вы можете попробовать что-то подобное. Вы забыли установить число равным 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;
});

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

Ответ принят как подходящий

Твоя проблема означает, что вы устанавливаете 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>

Спасибо, это работает! Действительно проницательно, не понял, что мне нужно назначить номер документу, но теперь это имеет смысл

karagkalex 16.10.2018 12:55

@karagkalex Да, мы использовали конструктор Number для анализа числа из строки HTML.

cнŝdk 16.10.2018 15:01

Другие вопросы по теме