Получение случайного цвета фона в javascript

Я новичок в java- script. Мне нужно получить случайный цвет фона, когда я вызываю определенную функцию.

Я нашел следующий код в Интернете, но я не совсем понимаю, как он работает.

код:

function getRandomColor () {
  var hex = Math.floor(Math.random() * 0xFFFFFF);
  return "#" + ("000000" + hex.toString(16)).substr(-6);
}

Как работает вышеуказанный код. Я понимаю, как работает Math.random(), но что означает hex.toString(16)).substr(-6)?

Может кто-нибудь пояснить мне, как работает этот код.

Ответы

Ответ 1

function getRandomColor () {
  var hex = Math.floor(Math.random() * 0xFFFFFF);
  return "#" + ("000000" + hex.toString(16)).substr(-6);
}

hex.toString(16) преобразует hex в представление номера строки в базе 16.

Синтаксис:

number.toString(radix)

radix: База, используемая для представления числового значения. Должно быть целое число от 2 до 36.

2 - The number will show as a binary value
8 - The number will show as an octal value
16 - The number will show as an hexadecimal value

substr(-6) просто берет последние 6 символов, которые обрезают "000000", потому что они не являются частью последних 6 символов.

Ответ 2

hex.toString(16) преобразует hex в представление номера строки в базе 16. Затем он добавляет 000000 в начале строки, чтобы убедиться, что она будет по меньшей мере длиной 6. и substr(-6) принимает последние 6 символов полученной строки. Таким образом, вы всегда получаете # + 6 шестнадцатеричных символов. Что представляет цвет.

Ответ 3

Сначала код выбирает случайное число и использует метод "& 0xFFFFFF", который обеспечивает диапазон от 0 до 16777215.

Как только мы получим это случайное число, мы преобразуем его в шестнадцатеричное число с использованием метода ".toString(16)", значение 16 означает, что мы хотим получить шестнадцатеричное преобразование.

Теперь мы можем думать, что у нас есть 6-значное случайное число в шестнадцатеричном формате для нашего цвета, но знайте, что метод ".toString(16)" не делает для нас никакого дополнения.

Например, если случайное число равно 255, которое является FF в шестнадцатеричном формате, оно не может использоваться, поскольку оно не составляет всего 6 цифр.

Один из методов - выполнить проверку длины строки и добавить соответствующее число 0 в начало "FF", чтобы получить "0000FF".

Здесь мы видим другую технику, в которой вы видите фиксированное число 0, добавленное к строке, а затем фиксированная длина прерывается до конца, гарантируя, что вы получите 6 цифр и правильно добавлены.

Я всегда использовал проверку длины строки или специальные функции заполнения (я не знаю, есть ли у нее javascript) - я ответил только на вопрос, чтобы полностью оценить технику, показанную в этом вопросе.