Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не меняется цвет в SPAN под FF (https://javascript.ru/forum/dom-window/10774-ne-menyaetsya-cvet-v-span-pod-ff.html)

Den1xxx 20.07.2010 11:29

Не меняется цвет в SPAN под FF
 
Задача:
1. Элемент меню обёрнут в тег SPAN и имеет фон по дефолту #f3f3ff;
2. При клике на элементе меню: меню раскрывается; меняется его фон на #ffcccc;
3. При повторном клике меню: закрывается; фон меняется назад на #f3f3ff;

Реализация:
<span id="div_style" onClick="document.getElementById('block_elem').style.display = showhide(document.getElementById('block_elem').style.display);
document.getElementById('div_style').style.background = changeSpan(document.getElementById('div_style').style.background)">
</span>

function showhide(obj){
if(obj == 'none') return 'inline';
else return 'none';
}
function changeSpan(obj){
if(obj == '#ffcccc') return '#f3f3ff';
else return '#ffcccc';
}

Вопрос:
В IE и Opera всё замечательно работает.
В FF 3.6.6 цвет фона меняется 1 раз и остаётся таким.
Что он, собака, хочет?

Skipp 20.07.2010 11:35

Так короче:
<span id="div_style" onClick="document.getElementById('block_elem').style.display = showhide(document.getElementById('block_elem').style.display);
this.style.background = changeSpan(this.style.background)">
</span>


Что за block_elem?

А почему не backgroundColor?

Skipp 20.07.2010 11:40

Den1xxx,
А ты смотрел что возвращает document.getElementById('div_style').style.backgro und.

Сделай алерт

function changeSpan(obj){
alert(obj);
	if(obj == '#ffcccc') return '#f3f3ff';
	else return '#ffcccc';
}

RE_ 20.07.2010 11:42

может попробовать backgroundColor?
а зачем писать document.getElementById('div_style'). если можно просто this.?

upd:что-то я торможу, пока писал уже столько ответов)

Skipp 20.07.2010 11:55

Я не понял ваш ответ. Совсем.
Вот:

<span style="background-color: #ffcccc" onclick="this.style.backgroundColor == 'rgb(255, 204, 204)' || this.style.backgroundColor == '#ffcccc' ? this.style.backgroundColor = '#f3f3ff' : this.style.backgroundColor = '#ffcccc'">Я цветоменяло</span>


И кстати в следующий раз пользуйтесь сначала поиском. На данный вопрос уже в этом форуме ответили не один десяток раз.

Den1xxx 20.07.2010 12:08

Цитата:

Сообщение от Skipp (Сообщение 64453)
Den1xxx,
А ты смотрел что возвращает document.getElementById('div_style').style.backgro und.

Сделай алерт

function changeSpan(obj){
alert(obj);
	if(obj == '#ffcccc') return '#f3f3ff';
	else return '#ffcccc';
}

Цитата:

Сообщение от RE_ (Сообщение 64454)
может попробовать backgroundColor?
а зачем писать document.getElementById('div_style'). если можно просто this.?

Что background отдаёт посмотрел, понял что правильней будет переписать
<span id="div_style" onClick="document.getElementById('block_elem').style.display = showhide(document.getElementById('block_elem').style.display);
this.style.backgroundColor = changeSpan(this.style.backgroundColor)">

Алерт тоже вставил, он показывает что цвет не меняется.
1 клик - ничего нет (стиль берётся из header - style)
2 клик - rgb(255, 204, 204)
3 и последующие - rgb(255, 204, 204)
Сабж здесь http://fromgomel.com/html_editor/index.html

Skipp 20.07.2010 12:10

Den1xxx,
мда, смешно

Den1xxx 20.07.2010 12:12

Цитата:

<span style="background-color: #ffcccc" onclick="this.style.backgroundColor == 'rgb(255, 204, 204)' || this.style.backgroundColor == '#ffcccc' ? this.style.backgroundColor = '#f3f3ff' : this.style.backgroundColor = '#ffcccc'">Я цветоменяло</span>
Т. е. Мозилла понимает только в виде rgb(255, 204, 204)?

Skipp 20.07.2010 12:26

Den1xxx,
нет она просто хранит информацию о цвете именно в rgb.

Den1xxx 20.07.2010 13:35

Skipp,
Спасибо, всё работает, но в функцию вставить не получилось - как ни старался.


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