Переключатель цветов

88
15 сентября 2021, 15:40

Не могу понять как правильно решить задание. Есть массив цветов в hex-формате и кнопки Start и Stop Нужно написать скрипт, который после нажатия кнопки Start, раз в секунду меняет цвет фона body на случайное значение из массива используя инлайн-стиль. При нажатии на кнопку Stop, изменение цвета фона должно останавливаться.Для генерации случайного числа (индекс элемента массива цветов), нужно использовать функцию randomIntegerFromInterval. Вот что у меня получилось:

const refs={ 
   startBtn: document.querySelector('button[data-action="start"'), 
  stopBtn: document.querySelector('button[data-action="stop"'), 
} 
const colors = [ 
  '#FFFFFF', 
  '#2196F3', 
  '#4CAF50', 
  '#FF9800', 
  '#009688', 
  '#795548', 
]; 
 
const randomIntegerFromInterval = (min, max) => { 
  return Math.floor(Math.random() * (max - min + 1) + min); 
}; 
 
setInterval('colors()',1000)
<button type="button" data-action="start">Start</button> 
<button type="button" data-action="stop">Stop</button>

Answer 1

const refs = { 
    startBtn: document.querySelector('button[data-action="start"'), 
    stopBtn: document.querySelector('button[data-action="stop"'), 
  }, 
  colors = [ 
    '#FFFFFF', 
    '#2196F3', 
    '#4CAF50', 
    '#FF9800', 
    '#009688', 
    '#795548', 
  ], 
  randomIntegerFromInterval = (max) => { 
    return Math.floor(Math.random() * (max + 1)); 
  }, 
  setRandomColor = () => { 
    const _color = colors[randomIntegerFromInterval(colors.length - 1)] 
    console.log(_color) 
    document.body.style.backgroundColor = _color 
  } 
 
let interval = undefined 
 
refs.startBtn.addEventListener('click', e => interval = interval ? 
  interval : 
  setInterval(() => setRandomColor(), 1000)) 
 
refs.stopBtn.addEventListener('click', e => clearInterval(interval))
<button type="button" data-action="start">Start</button> 
<button type="button" data-action="stop">Stop</button>

Answer 2
const colors = [
  '#FFFFFF',
  '#2196F3',
  '#4CAF50',
  '#FF9800',
  '#009688',
  '#795548',
];
const refs = {
  bodyColor: document.querySelector('body'),
  startButton: document.querySelector('.start'),
  stopButton: document.querySelector('.stop'),
};
refs.startButton.addEventListener('click', start);
refs.stopButton.addEventListener('click', stop);
const randomIntegerFromInterval = (min, max) => {
  return Math.floor(Math.random() * (max - min + 1) + min);
};
function changeBackground(color) {
  refs.bodyColor.style.backgroundColor = color;
}
let intervalColorChange = undefined;
function start() {
  intervalColorChange = setInterval(randomNumber => {
    randomNumber = randomIntegerFromInterval(0, 5);
    changeBackground(colors[randomNumber]);
  }, 1000);
  refs.stopButton.removeAttribute('disabled');
  refs.startButton.setAttribute('disabled', true);
}
function stop() {
  clearInterval(intervalColorChange);
  refs.startButton.removeAttribute('disabled');
  refs.stopButton.setAttribute('disabled', true);
}
READ ALSO
border-top на 50%

border-top на 50%

Нужно как-то указать размер border-topШирина блока 300px, border-top должен быть на 150px (50%) Как это сделать?

81
Boost 1.71 Получить io_context из basic_socket

Boost 1.71 Получить io_context из basic_socket

Вопрос по модулю boost::asio, версия boost 171

126
Почему вызывается деструктор

Почему вызывается деструктор

Не совсем понятно почему сразу после создания объекта вызывается его деструктор

208
Создать один массив объектов из двух. C++

Создать один массив объектов из двух. C++

Допустим у меня есть два массива по 5 объектов класса ObjЯ хочу поместить эти объекты из разных массивов в один результирующий, размерностью...

103