Помогите написать javascript прячущий ссылку?
Нужно, чтобы была ссылка с надписью "показать картинку". При клике на которую ссылка бы исчезала и на её место грузилась бы картинка.
Показ картинки делаю так :
А как удалить ссылку?
Отсутствует
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:2.0b1) Gecko/20100630 Firefox/4.0b1
Отсутствует
<script type="text/javascript"> /*<![CDATA*/ function replaceWithImage(objLink, strURL) { var objContainer = objLink.parentNode; // Проверка на поддержку нужной функциональности DOM2 if (objContainer && document.createElement && objContainer.replaceChild && objLink.getAttribute) { var objImage = document.createElement('img'); if (objImage) { objImage.setAttribute('src', strURL); objImage.setAttribute('alt', objLink.hasAttribute('title') ? objLink.getAttribute('title') : ''); objContainer.replaceChild(objLink, objImage); return false; } } else { // Костыль для старых браузеров, не поддерживающих DOM2, но реализующих innerHTML (IE5.x) if (objContainer.innerHTML) { var strAlt = ''; if (objLink.title) { strAlt = objLink.title; } objContainer.innerHTML = '<img src="' + strURL + '" alt="' + strAlt + '" />'; return false; } } return true; } /*]]>*/ </script> <div> <a href="URL такой же страницы но с картинкой (для пользователей без JS)" onclick="return replaceWithImage('URL картинки')"> </div>
Вместо <div> можно любой применимый по смыслу контейнер (параграф, для inline - span). Кроме ссылки в контейнере ничего быть не должно (иначе оно пропадет в старых браузерах).
Да, писалось с ходу прямо в форме ответа, поэтому могут быть опечатки или небольшие ошибки в мелочах, тестировать лень. :)
edit: Угу, как знал, будут ошибки. Как минимум - один return пропустил :) Fixed.
Отредактировано drdaeman (09-08-2006 20:08:48)
Отсутствует
drdaeman
костыль не костыль, а работает пока везде одинаково
в отличии от setAttribute который может не проканать
править код или же пользоваться исключительно объектную модель это дело автора
кстати сообщу, что мозила и осёл создадут разный код(тоесть содержимое innerHTML контейнера будет разным) не вздумайте удалять объекты через innerHTML можете попасть на интересные багофичи, только через DOM
это не просто аватара - это древний символ изгнания зла
Отсутствует
в отличии от setAttribute который может не проканать
Да, согласен, лучше было бы:
if (objImage.setAttribute) { objImage.setAttribute('src', strURL); objImage.setAttribute('alt', objLink.hasAttribute('title') ? objLink.getAttribute('title') : ''); } else { objImage.src = strURL; }
править код или же пользоваться исключительно объектную модель это дело автора
IMHO - лучше стандартное решение (потому что оно где уже работает там и будет поддерживаться в разумно обозримом будующем вне зависимости от идей разработчиков что из "нестандарта" держать, а что нет), а вот если оно оказывается недоступно - тогда известные "костыли".
Но так - да, кому как нравится, разумеется.
не вздумайте удалять объекты через innerHTML можете попасть на интересные багофичи, только через DOM
Большие конструкции с кучей всего - да, слышал что бывают проблемы. С одной ссылкой (как здесь) никогда не встречал, ни с добавлением ни с удалением. Можно поподробнее?
Отсутствует
drdaeman
Большие конструкции с кучей всего - да, слышал что бывают проблемы. С одной ссылкой (как здесь) никогда не встречал, ни с добавлением ни с удалением. Можно поподробне
я имел ввиду непосредственное удаление через правку innerHTML
а если просто заменить, проблем не будет
а вот например удалить третью ссылку - это уже вызовет некоторые проблемы
это не просто аватара - это древний символ изгнания зла
Отсутствует
Извиняюсь за офтопик, но тему отдельную создавать думаю бессысленно, поэтому решил сюда написать
Проблема с разметкой :
рисунок в Фотошопе делится на части и сохраняется как хтмл страница со ссылками на рисунке. У меня страничка на XHTML. Код вставляю, правлю и вижу следующее : между рисунками появляется отступ. Стоит закомментировать Doctype все становится нормально - выглядит как один рисунок. Пытался с помощью CSS исправить - не получается...
Будте так любезны, подскажите как исправить
~~~~~~~~~~~~~~~
Отсутствует
теги все закрыты где положено?
соответствие стандартам вообще наступает?
это не просто аватара - это древний символ изгнания зла
Отсутствует
дай код чтоли, или страничку в сети опубликуй, тогда и посмотрим
это не просто аватара - это древний символ изгнания зла
Отсутствует
вы будете смеятся но сегодня сам столкнулся с такой проблемой оказалось сабака порылась в модели отображения, а по русски
это не просто аватара - это древний символ изгнания зла
Отсутствует
Страничку опубликовать не могу тк нет с собой. Дома инета нет, а в клубах кричат что нельзя у них со своих флешек ничего копировать, только через админский комп скидывать на них можно... Надеюсь свкоре появится инет.
style="display: block
Типа пишешь силь такой и все становится как надо?
~~~~~~~~~~~~~~~
Отсутствует
... style="display: block;" ...
Это же по-умолчанию... Какие проблемы с этим?
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:2.0b1) Gecko/20100630 Firefox/4.0b1
Отсутствует
AKS
по умолчанию для картинки inline или ты не знал?
подозреваю это потому, что резервируется место для того, что будет после картинки
а ещё есть вариант пхать всё в фон
это не просто аватара - это древний символ изгнания зла
Отсутствует