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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> свойства и методы DIV 
:(
    Опции темы
Зэц
Дата 14.12.2004, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.12.2004
Где: Южно-Сахалинск

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



Хочу задать несколько глупых вопросов...
Допустим у меня есть
Код

<div id='Test'>Test</div>

В процессе я текст внутрь включенный менял, добавлял, редактировал... Но вот мне в некоторый момент понадобыилось узнать:
Цвет какой-нить определенной буковки из этого div'a, ее шрифт, высота и ширина в пикселях... Как это сделать???
Еще вопрос туда же... Допустим я кликнул мышкой в этот же div... Мне реально узнать, на какую а буковку попал?? Если при этом я не выделял ни каких буковок, то есть варианты работы с выделенной областью здесь не подойдут...

Помощь узнать желательно с примерами))
Заранее спасибо
PM MAIL ICQ   Вверх
Sardar
Дата 14.12.2004, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Всё работает не совсем как ты это себе представляешь smile
Слой содержит любые HTML элементы и отывки текста между ними как спосок нод в своём дереве(и текст и элементы наследуют интерфейс Nodе), это модель документа W3C DOM.
Узнать на какой букве кликлнули нельзя, т.к. буква это часть текста(событие для всего текста) либо находится внутри дочернего элемента(событие для всего элемента). Тогда можно каждую букву обернуть в некоторый элемент(SPAN), т.е. каждая буква станет полноценной нодой в дереве. Клик по букве может ловить как сама буква, так и слой её содержащий(и выше по дереву), ссылка на букву будет лежать в поле event.target(согласно модели W3C DOM) и event.srcElement(согласно привычке ИЕ делать всё не как у людей).
Код
<div id="test">Привет всем</div>
....
var d=document.getElementById("test");
var t=d.firstChild.nodeValue; //дпустим что в слое лежит только текст, обернём каждую букву в SPAN
var nd=document.createElement("DIV"); //создадим новый слой
for(var i=0; i<t.length; i++) {
 var sp=document.createElement("SPAN");
 sp.appendChild(document.createTextNode(t.charAt(i))); //можно установить события для каждой букбы
 nd.appendChild(sp);
}
nd.addEventListener("click", click_handler, false); //читай топик "всё о событиях"
d.parentNode.replaceChild(nd, d); //заменим слой на только что созданный

function click_handler(e) {
 alert("Кликнули по букве: " + e.target.innerHTML);
 e.target.style.color="yellow"; //далее можем делать с буквой
 e.target.style.backgroundColor="black"; //всё что угодно
 this.style.backgroundColor="blue"; //со слоем тоже можем делать всё что захотим
}


Код запускай в Мозилле или Опере, ИЕ как всегда отходит от стандартов. Как его правильно фиксить читай в топике "всё о событиях".


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


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.12.2004
Где: Южно-Сахалинск

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



Спасибо...) Вроде все понятно, надо только это опробовать... Я думаю все же можно выловить конкретную буковку. Каждую буковку текста делать полноценной нодой все же не разумно, так как текст может быть очень большой... А вот однотипные фрагменты текста с общим стилем вполне можно... При клике на такой кусок, просто разбиваем уже только его, и вызываем событие клика уже самостоятельно и кода... Такое прокатит???
PM MAIL ICQ   Вверх
Sardar
Дата 14.12.2004, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Цитата
Каждую буковку текста делать полноценной нодой все же не разумно

Это еще почему? smile Прошли те времена когда на бразуер отводилось не более 6-8Мб памяти, теперь любая бродилка хавает 30-60Мб, зачем на нодах экономить? И я не представляю ситуацию когда нужно ловить клики по каждым буквам огромного текста... что это будет?

Если нужны опредеёллные буквы, то можешь заранее обернуть их в SPAN'ы и работать только с ними.

А вообще поясни задачу получше.


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


 




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


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

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