добавление ссылок к картинкам
Всем привет, однажды уже обращался с похожим вопросом.. Тогда мне показалось, что нашел решение, но оно оказалось очень глючным)
Есть документ, с картинками. Мне надо сделать часть картинок ссылками. Чтобы был не просто <img src="....">, а <a href = "..."><img src="..."></a> можно ли это сделать? Если да, то как? Спасибо) |
поместить картинки внутрь тега <a>
|
иии как это сделать?)
я не нахожу метода DOM, который бы это позволил:( а с innerHTML не получится с тегом <img> |
Цитата:
|
Snipe, по-твоему, можно добавить дочерний элемент-ссылку к картинке?
У меня не получилось.. Вот код (упрощенный): function wrapImages () { var thisImage; //содержит картинку var elem = document.createElement("a"); elem.href="http//www.mail.ru"; thisImg.appendChild(elem); } на этот код браузер ругается:( |
function wrapImages () { var thisImage; //содержит картинку var elem = document.createElement("a"); elem.href="http//www.mail.ru"; elem.appendChild(thisImage); } Но не проверял. |
Либо innerHTML родительского для всех картинок блока и replace'ом по RegExp'у.
|
ну вообще-то есть такая штука как parentNode :)
var parent = img.parentNode; parent.removeChild(img); var elem = document.createElement("a"); elem.href="http//www.mail.ru"; elem.appendChild(img); parent.appendChild(elem); |
Все верно, упустил =)
тогда, по идее можно картинки не удалять (parent.removeChild(img); ), если верить одному мануалу: "Метод appendChild() объекта Node добавляет узел newChild в список дочерних узлов данного узла. Если узел newChild уже включен в состав дерева, то перед операцией включения он удаляется." |
а если ему не верить?
|
Протетсть под всеми браузерами, нам потом расскажешь...
|
appendChild переносит (перемещает) уже существующий в дереве DOM узел. Работает везде и во всех браузерах.
|
вот и отлично!
Доверяй, но проверяй (мало ли как там в рекомендациях написано, браузеры делают, бывает, по-совему). |
Цитата:
Цитата:
|
Можно немного проще сделать:
var elem = document.createElement('a'); elem.href = 'url'; img.parentNode.insertBefore(elem, img); elem.appendChild(img); |
Так даже лучше, так как сокращение кода - это увеличение скорости работы...
|
Цитата:
Плюс предыдущая версия почему-то меняла порядок картинок в случае, Если у родительского элемента было несколько детей-картинок. Эта работает еще лучше) |
Часовой пояс GMT +3, время: 15:28. |