Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   document.body.style.backgroundColor onclick (https://javascript.ru/forum/misc/29004-document-body-style-backgroundcolor-onclick.html)

Hekumok 10.06.2012 23:50

Цитата:

Сообщение от Deff (Сообщение 180716)
:blink: Почему -то все одно -синего нет ??? (Опера - ток -красный - и зелёный

Я, кста, через оперу смотрю =)

devote 10.06.2012 23:51

Цитата:

Сообщение от Deff
Почему -то все одно -синего нет ??? (Опера - ток -красный - и зелёный

ну дык судя по коду так и должно быть.

Deff 10.06.2012 23:57

Цитата:

Сообщение от Hekumok
Объясните поподробней, плиз, что и как, я ведь не проф, а только начинающий почти =)

Ну забили нужныйе нам цвета в span и считываем как их даёт брауз в массив color
Теперрь твои нужные цвета в текущем формате в массиве color
-их подставляешь в cкрипте в цвета для боdy и их сравнивашь при считывании с бекграунда боdy

devote 10.06.2012 23:58

Цитата:

Сообщение от Deff
Ну забили нужныйе нам цвета в span и считываем как их даёт брауз в массив color
Теперрь твои нужные цвета в текущем формате в массиве color -их подставляешь в цвета и их сравнивашь при считывании с бекграунда боdy

зачем все это, я дал второй вариант, компактный и рабочий.

Deff 10.06.2012 23:58

Цитата:

Сообщение от devote
зачем все это, я дал второй вариант, компактный и рабочий.

Прост он просил пояснить на той странице чо - к чему

Hekumok, этот метод
devote,уже использует в последнем Скрипте и ужал его и укомпактил с 12 строк до 4

Hekumok 11.06.2012 00:04

Цитата:

Сообщение от Deff (Сообщение 180729)
Прост он просил пояснить на той странице чо - к чему
Hekumok, этот метод
devote,уже использует в последнем Скрипте и ужал его и укомпактил с 12 строк до 4

Да я знаю, видел, просто интересно как работает =)

devote 11.06.2012 00:11

Цитата:

Сообщение от Hekumok
просто интересно как работает =)

на каждое свойство стиля у браузера висит аксессор (setter/getter), при назначении какого то значения в свойство стиля, браузер его конвертирует в удобный для него вид, затем пытаясь получить текущее свойство, срабатывает геттер, и возвращает значение которое браузеру проще показать. С точки зрения оптимизации, выдать значение rgb() намного проще браузеру, так как не нужно конвертировать числа в шестнадцатеричное представление. Тем самым меньше затрачивается процессорного времени.

Hekumok 11.06.2012 00:27

Цитата:

Сообщение от devote (Сообщение 180734)
на каждое свойство стиля у браузера висит аксессор (setter/getter), при назначении какого то значения в свойство стиля, браузер его конвертирует в удобный для него вид, затем пытаясь получить текущее свойство, срабатывает геттер, и возвращает значение которое браузеру проще показать. С точки зрения оптимизации, выдать значение rgb() намного проще браузеру, так как не нужно конвертировать числа в шестнадцатеричное представление. Тем самым меньше затрачивается процессорного времени.

Спасибо, devote, я это уже понял :)

MSSERG 08.09.2016 00:06

Я наверное дико поздно с ответом, просто сам искал ответ, разобрался в коде, вот так должен был выглядеть код, который работает:

function color() {
if (document.body.style.backgroundColor == ''){document.body.style.backgroundColor='red';}
else if (document.body.style.backgroundColor == 'red'){document.body.style.backgroundColor='green';}
else if (document.body.style.backgroundColor == 'green'){document.body.style.backgroundColor='blue';};
}


Косяк был в конструкции, человек забыл поставить фигурные скобки после if () {}; , из за этого функция завершала свою работу после первого выполненного, либо выполняла последнюю, так как все условия мгновенно выполнялись один за одним.

Вот так она выглядит в цикле, то есть по кругу (R-G-B>R-G-B...):

function color() {
if (document.body.style.backgroundColor == ''){document.body.style.backgroundColor='red';}
else if (document.body.style.backgroundColor == 'red'){document.body.style.backgroundColor='green';}
else if (document.body.style.backgroundColor == 'green'){document.body.style.backgroundColor='blue';}
else {document.body.style.backgroundColor='red';};
}

laimas 08.09.2016 00:16

Цитата:

Сообщение от MSSERG
Косяк был в конструкции, человек забыл поставить фигурные скобки после if () {};

Фигурные скобки нужны тогда, когда по условию должно выполнятся несколько инструкций, то есть строк кода.


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