добавление ссылок к картинкам
Всем привет, однажды уже обращался с похожим вопросом.. Тогда мне показалось, что нашел решение, но оно оказалось очень глючным)
Есть документ, с картинками. Мне надо сделать часть картинок ссылками. Чтобы был не просто <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, время: 19:46. |