Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2012, 21:31
Новичок на форуме
Отправить личное сообщение для goliaf Посмотреть профиль Найти все сообщения от goliaf
 
Регистрация: 10.03.2012
Сообщений: 7

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

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

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

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

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

Идеи?
Заранее благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2012, 21:48
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Потому что свойство в style-это когда вы либо в явной форме задаете в js (select1.style.background = "#FF6161" ; ) либо в <select style="background:#FF6161"> пишете.
а если у вас background задается через имя класса в css, оно в select1.style.background не устанавливается, что логично.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2012, 22:01
Новичок на форуме
Отправить личное сообщение для goliaf Посмотреть профиль Найти все сообщения от goliaf
 
Регистрация: 10.03.2012
Сообщений: 7

Понятно. А есть возможность считать значение прямо из CSS, если известно имя класса?
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2012, 22:05
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Конечно. css в этом вопросе, по сути, ничем не отличается от select-а )))
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2012, 22:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

select1.style.background = '';
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2012, 22:28
Новичок на форуме
Отправить личное сообщение для goliaf Посмотреть профиль Найти все сообщения от goliaf
 
Регистрация: 10.03.2012
Сообщений: 7

Сообщение от Kolyaj Посмотреть сообщение
select1.style.background = '';
Не работает в IE. Цвет фона становится белым.
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2012, 22:32
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Да нет, Kolyaj прав. Если вам просто надо сбросить установку style.background в дефолтный css параметр, а не вычислять цвет в случае сложной логики, то проще варианта не найти.
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2012, 22:54
Новичок на форуме
Отправить личное сообщение для goliaf Посмотреть профиль Найти все сообщения от goliaf
 
Регистрация: 10.03.2012
Сообщений: 7

Сообщение от Kolyaj Посмотреть сообщение
select1.style.background = '';
Сообщение от Rootpassword Посмотреть сообщение
Да нет, Kolyaj прав. Если вам просто надо сбросить установку style.background в дефолтный css параметр, а не вычислять цвет в случае сложной логики, то проще варианта не найти.
Именно так сейчас у меня и есть. Везде работает, кроме IE, который как обычно отличается от всех остальных.
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2012, 23:39
Новичок на форуме
Отправить личное сообщение для goliaf Посмотреть профиль Найти все сообщения от goliaf
 
Регистрация: 10.03.2012
Сообщений: 7

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

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;
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00
Как организовать RichEdit arma Элементы интерфейса 2 18.02.2010 14:57
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
Как вывести на экран значение функции SELECT MAX(id) Владдд Серверные языки и технологии 3 25.01.2009 16:07