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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразовать "rgb(255, 204, 153)" в "#FFCC99", возможно ли стандартными методами? 
:(
    Опции темы
Ciber SLasH
Дата 13.11.2005, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Обнаружил неприятный момент: FireFox возвращает цвет элементов как строку "rgb(255, 204, 153)".
Возможно ли стандартными способами (без написания своей функции) преобразовать такую строку в "#FFCC99" ?
PM   Вверх
Sardar
Дата 13.11.2005, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



По моему нет, но ничего сложного в преобразовании нет:

Код
function RGBtoHEX(str) {
  var rgb=/^\s*rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/.exec(str);
  var ret="#";
  for(var i=1; i<rgb.length; i++) ret+=Number(rgb[i]).toString(16);
  return ret;
}
alert(RGBtoHEX("rgb(255, 204, 153)"));



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Zeroglif
Дата 13.11.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 28
Всего: 66



Или же можно в этой функции уйти от толстого регекспа:

Код

rgb=str.match(/\d{1,3}/g);


Соответственно, цикл начнётся уже с нуля.
PM MAIL WWW   Вверх
Гость_12345
Дата 13.11.2005, 19:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Тогда вот, ещё меньше ударов по клавишам: : )
Код
function RGBtoHEX(str) {
  var rgb=str.match(/\d{1,3}/g);
  for(i in rgb) {rgb[i]=Number(rgb[i]).toString(16);}
  return '#'+rgb.join('');
}
d.write(RGBtoHEX("rgb(255, 204, 153)"));

  Вверх
Ciber SLasH
Дата 13.11.2005, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Остановился на следущем (т.к. нужна проверка на соответствие шаблону):
Код
/*** Разбор RGB-строки, типа "RGB(255, 0, 255)" и выдача строки, типа "#FF00FF" ***/
function rgb2hex(value) {
var rgb = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/.exec(value);
  // Если строка не типа "RGB(255, 0, 255)", то "на выход"
  if (rgb == null) return value;
var ret = "#";
var hex;
  for (var i = 1; i < rgb.length; i++) {
    hex = Number(rgb[i]).toString(16);
    if (hex.length < 2) hex = "0" + hex;
    ret += hex;
  }
return ret.toUpperCase();
}

Спасибо всем кто ответил... smile

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


 




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


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

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