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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить содержимое alt из img, img содержится в innerHTML 
V
    Опции темы
Wolf1994
Дата 26.9.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



Скрипт динамически меняет содержимое ссылки, заменяя при клике текст картинкой, а картинку текстом. При этом, при замене текста, он переносится в "alt" картинки, а при обратной замене - возвращается на прежнее место.

Код

<script type="text/javascript">
function poster(ev,p1,p2)
{
 ev=ev||event;
 var p_o=ev.srcElement||ev.target;
 alert (p_o.innerHTML.indexOf("alt"));
 //если !alt
  p_o.innerHTML='<img src="/poster.php?p1='+p1+'&amp;p2='+p2+'" alt="'+p_o.innerHTML+'" />';
 //иначе
 // p_o.innerHTML=содержимому alt;
}
</script>
<a onclick="poster(event,'forum',1)" href="javascript:void(0)">email</a>


Как можно извлечь содержимое alt'а? indexOf его почему-то не находит...
PM MAIL WWW   Вверх
Sardar
Дата 27.9.2006, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Мне трудно понять зачем тут innerHTML вообще нужен, можно было сделать картинку и просто display:none её,а  сам текст в span, стилями выбираем что нужно.

По сабжу: p_o.getElementsByTagName("img")[0].alt - не надо с вёрсткой обращаться как с текстом.


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



Цитата

p_o.getElementsByTagName("img")[0].alt


Не работает:

Код

<script type="text/javascript">
function poster(ev,p1,p2)
{
 ev=ev||event;
 var p_o=ev.srcElement||ev.target;

 try{alert(p_o.getElementsByTagName("img")[0].alt)}
 catch(e){alert("bad")}

 var t='<img src="/poster.php?p1='+p1+'&amp;p2='+p2+'" alt="'+p_o.innerHTML+'" />';
 p_o.innerHTML=t;
 alert(t);
}
</script>
<a onclick="poster(event,'forum',1)" href="javascript:void(0)">email</a>


При первом обращении происходит замена на img, но при втором обращении alt не выводится, хотя он есть.

Цитата

Мне трудно понять зачем тут innerHTML вообще нужен, можно было сделать картинку и просто display:none её,а  сам текст в span, стилями выбираем что нужно.


Предполагается, что ссылки будут отображать имэйл-адреса, в виде динамически - генерируемых (стоит ли их кэшировать?) картинок. Поэтому, хочется ограничить их вызов интересами посетителя к конкретному адресу.
PM MAIL WWW   Вверх
Sardar
Дата 27.9.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Добавь строку: alert(p_o.tagName), там должен быть img, т.к. на ней кликаем. В итоге ты либо обращаешся к p_o.alt (только если картинка существует), либо (лучше): [/B]this.getElementsByTagName("img")[0].alt[/B] - тоже только если картинка существует, иначе будет исключение, т.к. [0] вернёт undefined из пустого списка.


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



Цитата

обращаешся к p_o.alt

Сработало. Спасибо.

Цитата

(только если картинка существует)

Как оказалось, это не имеет значения - в противном случае возвращается "undefined" (не генерируя исключение).

Цитата

(лучше)

Чем именно?



Это сообщение отредактировал(а) Wolf1994 - 27.9.2006, 18:02
PM MAIL WWW   Вверх
Sardar
Дата 27.9.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Цитата(Wolf1994 @  27.9.2006,  17:00 Найти цитируемый пост)
Чем именно?

Следует твоей логике, ты ведь думал что p_o это твоя ссылка. А теперь  представь, что потом ты в ссылку будешь ложить ещё и текст, srcElement/target будет именно тем, на чём кликнули. this будет всегда твоей ссылкой, если обработчик события не повешан по attachEvent в ИЕ (все остальные браузеры глупостью не страдают).


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



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


 




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


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

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