Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как считать background с select? (https://javascript.ru/forum/dom-window/26499-kak-schitat-background-s-select.html)

goliaf 10.03.2012 21:31

Как считать background с select?
 
Приветствую. Задача у меня следующая.

1. Функция проверки меняет цвет фона выпадающего списка (select) на красный.
2. Далее, когда пользователь выбрал другое значение, фон с красного должен поменяться снова на исходный (заданный в CSS).

С первым пунктом проблем нет.
select1.style.background = "#FF6161";

Проблема с обратной заменой. Я до сих пор не нашёл способа считать заданный посредством CSS цвет фона в выпадающем списке. Код:
bсkgr = select1.style.background;

возвращает пустую строку.

Идеи?
Заранее благодарен.

Rootpassword 10.03.2012 21:48

Потому что свойство в style-это когда вы либо в явной форме задаете в js (select1.style.background = "#FF6161" ; ) либо в <select style="background:#FF6161"> пишете.
а если у вас background задается через имя класса в css, оно в select1.style.background не устанавливается, что логично.

goliaf 10.03.2012 22:01

Понятно. А есть возможность считать значение прямо из CSS, если известно имя класса?

Rootpassword 10.03.2012 22:05

Конечно. css в этом вопросе, по сути, ничем не отличается от select-а )))

Kolyaj 10.03.2012 22:09

select1.style.background = '';

goliaf 10.03.2012 22:28

Цитата:

Сообщение от Kolyaj (Сообщение 162369)
select1.style.background = '';

Не работает в IE. Цвет фона становится белым.

Rootpassword 10.03.2012 22:32

Да нет, Kolyaj прав. Если вам просто надо сбросить установку style.background в дефолтный css параметр, а не вычислять цвет в случае сложной логики, то проще варианта не найти.

goliaf 10.03.2012 22:54

Цитата:

Сообщение от Kolyaj (Сообщение 162369)
select1.style.background = '';

Цитата:

Сообщение от Rootpassword (Сообщение 162375)
Да нет, Kolyaj прав. Если вам просто надо сбросить установку style.background в дефолтный css параметр, а не вычислять цвет в случае сложной логики, то проще варианта не найти.

Именно так сейчас у меня и есть. Везде работает, кроме IE, который как обычно отличается от всех остальных.

goliaf 10.03.2012 23:39

Вот общее решение:

function SetEingabeError(Ctl){
	
	bgrnd = getBackGroundColor(Ctl);
	
	Ctl.setAttribute("StdBackGround", bgrnd);	
	Ctl.style.background = "#FF6161";
}

function ResetEingabeError(Ctl){
	
	bgrnd = Ctl.getAttribute("StdBackGround")
	if (bgrnd) Ctl.style.background = bgrnd; 
}


function getBackGroundColor(Ctl) {
    
    if(window.getComputedStyle) {
       Farbe= window.getComputedStyle(Ctl, "").getPropertyValue("background-color");
    } else if(Ctl.currentStyle) {
       Farbe= Ctl.currentStyle.backgroundColor;
    } else if(document.ids) {
       Farbe= document.layers[Ctl.id].bgColor;            
    }
    
    return Farbe;
}


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