Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   я тупая помогите) (https://javascript.ru/forum/events/83563-ya-tupaya-pomogite.html)

irinapushkina 13.01.2022 19:33

я тупая помогите)
 
я тупой новичок

написала функцию для генерации цвета элемента в игре-песочнице
но почему-то она не всегда отрабатывает. те иногда тупо свойство цвет пропадает у элемента

в чем проблема?
конечно было бы круто еще белый цвет исключить из генерации но тоже пока не знаю как)

function randomColor() {
var r = Math.floor(Math.random() * (255))
var g = Math.floor(Math.random() * (255))
var b = Math.floor(Math.random() * (255))
return '#' + r.toString(16) + g.toString(16) + b.toString(16);
}

ksa 13.01.2022 19:38

Цитата:

Сообщение от irinapushkina
конечно было бы круто еще белый цвет исключить из генерации но тоже пока не знаю как)

Белый это - 255,255,255.
Если такой сгенерится - повтори генерацию еще раз. ;)

voraa 13.01.2022 19:49

unction randomColor() {
var r = Math.floor(Math.random() * (256))
var g = Math.floor(Math.random() * (256))
var b = Math.floor(Math.random() * (256))
return '#' + r.toString(16).padStart('0',2) + g.toString(16).padStart('0',2) + b.toString(16).padStart('0',2);

рони 13.01.2022 20:20

Цитата:

Сообщение от irinapushkina
свойство цвет пропадает у элемента

в чем проблема?

css работает с цветами определённой длины #RRGGBB[AA] или #RGB[A], а ваш код может сгененерировать например #RRGGB, что будет ошибкой и цвет не определится.
https://developer.mozilla.org/ru/doc...SS/color_value
вариант с дополнением до стандарта смотрите у voraa,

Aetae 13.01.2022 22:48

voraa, у тебя в padStart порядок аргументов перепутан.)

Ну и проще сделать в одну сточку:
function randomColor() {
  return '#' + (Math.random() * 0x1000000 | 0)
    .toString(16)
    .padStart(6, 0)
}

irinapushkina 14.01.2022 14:27

спасибо!!!

Alexandroppolus 18.01.2022 16:26

Цитата:

Сообщение от Aetae
(Math.random() * 0x1000000 | 0)

надо (Math.random() * 0xffffff | 0), тогда исключится белый


Часовой пояс GMT +3, время: 21:25.