Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> style.backgroundColor в Firefox, rfr получить цвет если он задан в hex 
V
    Опции темы
Dave
Дата 9.6.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: нет
Всего: 1



Цвет ячейки задан в виде в шестнадцатиричном виде #cccccc
если получить style.backgroundColor в ИЕ то  выдаст #cccccc, 
а если в Firefox то выдаст rgb(204, 204, 204), пример ниже.
Как можно в FF получить Firefox #cccccc а не  rgb(204, 204, 204) ? 
Думаю преобразовывать как то нужно, не знаю как только.
Код

<html>
<head>
<script >
function Over(obj){
    alert(obj.style.backgroundColor)    ;#output will be rgb(204, 204, 204)
    if (obj.style.backgroundColor =='#cccccc' ){
        obj.style.backgroundColor='red';
    }

}
</script>
</head>


    <body>
    <table border="1" width="500">
    <tr>
        <td style="background-color:#cccccc;" onmouseover="Over(this);">
                                                  12121
        </td>    
    </tr>
    <tr>
        <td style="background-color:#cccccc;" onmouseover="">
                                                  333333
        </td>    
    </tr>
    <tr>

        <td style="background-color:#cccccc;" onmouseover="">
                                                  44444
        </td>    


    </tr>
    </table>    

    </body>
</html>


PM MAIL   Вверх
IDVsbruck
Дата 9.6.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



То, что ты получаешь - это, фактически, интерпретация CSS.
У самой ячейки есть свойство bgColor, которым можно воспользоваться для получения цвета в представлении javascript. Думаю, это наиболее правильное решение.
Хотя в крайнем случае, если все же прийдется работать со строкой, то отдели от нее rgb с открывающей и закрывающей скобкой, затем функцией split(строка, ",") раздели строку на массив, а каждое из трех элементов массива преобразуй в HEX: parseInt(stroka_iz_massiva, 16). Так ты получишь 3 хекса, которые можно соединить в строку типа "#xxxxxx".
PM MAIL   Вверх
Ghirik
Дата 10.6.2008, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Вообще, в JavaScript, на мой взгляд, удобнее оперировать с десятичными значениями. Я использую пару функций для доставания реальных значений стилей.

Для кроссбраузерного получения действующего стиля:

Код

$tyle = function (el) {!el.currentStyle ? style = document.defaultView.getComputedStyle(el, null) : style = el.currentStyle; return style;};


И для парса действующих цветов:

Код

function rgb(color) { if (/#/.test(color)) {var rgb = color.replace(/[# ]/g,"").replace(/^(.)(.)(.)$/,'$1$1$2$2$3$3').match(/.{2}/g); for (var i = 0;  i < 3; i++) rgb[i] = parseInt(rgb[i], 16); } else if (/rgb/.test(color)) {    var rgb = /(\d+), (\d+), (\d+)/.exec(color); for (var i = 0;  i < 3; i++) rgb[i] = Number(rgb[i+1]);    rgb.pop(); }; return rgb; };


Строчка такого вида

var rgb = rgb($tyle(oject).backgroundColor);

Вернет вам массив с тремя элементами R-G-B в десятичном виде.

При этом, значения могут быть заданы хоть где, хоть через таблицы стилей, хоть прямо в атрибуте.






--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Dave
Дата 10.6.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: нет
Всего: 1



Всем спасибо, помогли !

PM MAIL   Вверх
Ghirik
Дата 27.6.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Изменил функцию для взятия действующих стилей:

Код

style = function(el) { return !el.currentStyle ? document.defaultView.getComputedStyle(el, null) : el.currentStyle; };


Стало совсем просто...



--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0685 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.