Javascript.RU

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

Получение кода цвета области.
Задача следующая: при нажатии на ячейку таблицы на экран выводится сообщение с кодом цвета в формате #RRGGBB.
В принципе, по событию вывести alert не проблема, только не могу сообразить, каким образом получить все-таки это значение, то есть как будто пипеткой взять образец цвета и присвоить это значение некой переменной.
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2011, 22:59
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

вам нужен цвет любого произвольного пикселя?
или достаточно цвет фона ячейки, например?
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2011, 21:47
Интересующийся
Отправить личное сообщение для schwind Посмотреть профиль Найти все сообщения от schwind
 
Регистрация: 09.02.2011
Сообщений: 19

Достаточно цвета фона ячейки. Лабораторку надо сдать, а я что-то зависла.
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2011, 23:11
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

а что именно не получается?
повесить событие?
а CSS-свойства HTML-объекта доступны в свойстве style
<div style="background-color:#FF0000;" onclick="alert(this.style.backgroundColor)">
qwe</div>
Ответить с цитированием
  #5 (permalink)  
Старый 11.02.2011, 12:49
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Gvozd Посмотреть сообщение
а что именно не получается?
Тут ключевое слово "пипетка"
Очевидно ей надо кликнув мышкой в точку любой таблицы вытянуть цвет ячейки, т.е. сначала по клику надо получить объект, а потом взять его backgroundColor (при отсутствии функции onclick на данном объекте). Но, может я и ошибаюсь... девушка ведь не разъясняет подробнее...
Ответить с цитированием
  #6 (permalink)  
Старый 11.02.2011, 13:00
Интересующийся
Отправить личное сообщение для schwind Посмотреть профиль Найти все сообщения от schwind
 
Регистрация: 09.02.2011
Сообщений: 19

Спасибо! Хотя бы какая-то оптимизация. Только цвет каждого придется поменять, остальное простым копированием.
Задание вот какое:
Ответить с цитированием
  #7 (permalink)  
Старый 11.02.2011, 13:11
Интересующийся
Отправить личное сообщение для schwind Посмотреть профиль Найти все сообщения от schwind
 
Регистрация: 09.02.2011
Сообщений: 19

То есть onclick все-таки прописывается, а
Сообщение от Маэстро Посмотреть сообщение
кликнув мышкой в точку любой таблицы вытянуть цвет ячейки
- это действие отдельной программы, типа 3c. А вообще-то из предложенного кода уже можно что-то слепить. Бегу пробовать.

Последний раз редактировалось schwind, 11.02.2011 в 13:13.
Ответить с цитированием
  #8 (permalink)  
Старый 11.02.2011, 13:15
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Не забудьте, что разные броузеры по-разному возвращают код цвета. Одни в формате #RRGGBB, а другие в формате rgb(rrr,bbb,ccc). Потребуется функция приведения к единому формату. Вот (только у меня здесь удаляется символ решетки #):

function RGBColorStrToHEX(color)
// преобразовывает rgb(255,255,255) или rgb(100%,100%,100%) в FFFFFF.
// расширяет сокращенную шеснадцатиричную запись цвета в полную, например, #FAE в FFAAEE.
// возвращает шестнадцатиричное значение цвета БЕЗ ведущего символа # и в верхнем регистре
{
color = color.replace(/\s/g,"");
var aRGB = color.match(/^rgb\((\d{1,3}[%]?),(\d{1,3}[%]?),(\d{1,3}[%]?)\)$/i);

if(aRGB)
 {
 color = '';
 for (var i=1;  i<=3; i++) color += Math.round((aRGB[i][aRGB[i].length-1]=="%"?2.55:1)*parseInt(aRGB[i])).toString(16).replace(/^(.)$/,'0$1');
 }
else
 {
 color = color.replace(/^#?([\da-f])([\da-f])([\da-f])$/i, '$1$1$2$2$3$3');
 color = color.replace(/#/, '');
 }

return color.toUpperCase();
}
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2011, 14:15
Интересующийся
Отправить личное сообщение для schwind Посмотреть профиль Найти все сообщения от schwind
 
Регистрация: 09.02.2011
Сообщений: 19

Причем код-то должен быть достаточно простым, это же первая лабораторка по JS
Ответить с цитированием
  #10 (permalink)  
Старый 11.02.2011, 16:14
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Думаю там ток на ие провряют(так как без regexp'ов кроссбраузерно хоть и получестя но будет маразматично).)
Так что если совсем просто то:
Пример: Internet Explorer only
document.onclick=function() { alert( window.event.srcElement.style.backgroundColor ) }

Последний раз редактировалось Aetae, 11.02.2011 в 22:05.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрыть из исходного кода часть javascript кода. javasc Javascript под браузер 10 12.03.2014 09:32
TabPanel загрузка кода с сервера Jevgeny ExtJS 5 07.12.2010 15:35
Изменения цвета картинки stieve Общие вопросы Javascript 40 23.11.2010 19:47
Получение текстовой области на стороне клиента sukubba Общие вопросы Javascript 2 18.04.2010 19:10
Поиск нужного скрипта (выбор цвета) Djumpen Общие вопросы Javascript 1 02.04.2010 08:23