Получение случайного цвета фона в 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) - я ответил только на вопрос, чтобы полностью оценить технику, показанную в этом вопросе.