Автор Тема: Mozilla и .backgroundColor  (Прочитано 3312 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Beaver

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
Mozilla и .backgroundColor
« : 15 Августа 2006, 16:47:55 »
Нубский вопрос:
К примеру, у меня есть ячейка таблицы: . Если из скрипта попытаться узнать цвет ее фона (m1n1.style.backgroundColor), то Opera и Internet Explorer выдаст строку "#ff0000" (что меня вполне устраивает), а вот Mozilla выдаст "rgb(255,0,0)". Есть ли какой-нибудь способ заставить Мозиллу выдать цвет именно в шестнадцатиричном виде? Очень нужно. Заранее спасибо.

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Mozilla и .backgroundColor
« Ответ #1 : 15 Августа 2006, 18:00:46 »
Нет врядли получится...

Но можно написать функцию, которая будет проверять если НЕ в шеснадцатиричном формате, то переводить в оный!

Оффлайн avb

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 22
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Mozilla и .backgroundColor
« Ответ #2 : 16 Августа 2006, 16:41:47 »
Такая функция реализована в библиотеке script.aculo.us effects.js (parseColor()).
effects.js использует, в свою очередь, библиотеку prototype.js.
Ради одной только функции, конечно, нет смысла подключать две библиотеки. Поэтому я выбрал то, что тебе нужно, немного видоизменив:

Number.prototype.toColorPart = function() {
    var digits = this.toString(16);
    if (this < 16) return \'0\' + digits;
    return digits;
  }

// converts rgb() and #xxx to #xxxxxx format,  
// returns self (or first argument) if not convertable  
String.prototype.parseColor = function() {  
  var color = \'#\';  
  if(this.slice(0,4) == \'rgb(\') {  
    var cols = this.slice(4,this.length-1).split(\',\');  
    var i=0; do { color += parseInt(cols).toColorPart() } while (++i<3);  
  } else {  
    if(this.slice(0,1) == \'#\') {  
      if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();  
      if(this.length==7) color = this.toLowerCase();  
    }  
  }  
  return(color.length==7 ? color : (arguments[0] || this));  
}

Теперь document.getElementById("m1n1").style.backgroundColor.parseColor() вернет строку с цветом в формате #xxxxxx

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Mozilla и .backgroundColor
« Ответ #3 : 16 Августа 2006, 17:08:07 »
Грамотно..

Оффлайн Beaver

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
Mozilla и .backgroundColor
« Ответ #4 : 16 Августа 2006, 22:04:57 »
Да нет, я спрашивал именно о встроенной функции преобразования. Но все равно большое спасибо.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28