Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ошибка с innerHTML (https://javascript.ru/forum/misc/1587-oshibka-s-innerhtml.html)

Gekt0r 19.08.2008 13:41

ошибка с innerHTML
 
Всем привет.
У меня возникла проблема. Есть документ, в котором несколько картинок-превьюшек. Требуется вычислить для каждой адрес большой картинки (это я уже сделал), потом "обернуть" код картинки в ссылку с большой картинкой. (изначально есть <img src="preview.jpg">. А надо - <a href="bigImage"><img src="preview.jpg"></a> )

Я думал сделать так:
1. Собрать все картинки по тэгу
2. В цикле для каждой взять ее innerHTML
3. Потом добавить к старому innerHTML ссылку с большой картинкой

В общем все получается, но только когда я пыьаюсь записать в innerHTML новую инфу, выскакивает ошибка "unknown runtime error"
при этом такой код:
var oldHTML = imgList[index].innerHTML;

работает нормально

а такой:
imgList[index].innerHTML = "что-нибудь";


выдает ошибку.
ЗЫ. imgList - массив картинок, полученный так:
var imgList = document.getElementsByTagName('img');

Gekt0r 19.08.2008 13:55

и, кстати, странность.
когда я вывожу innerHTML картинки алертом, выводится просто пустой алерт

Андрей Параничев 19.08.2008 13:57

Gekt0r,
Какой может быть innerHTML (внутреннийHTML) у картинки, если она - одинарный тег?

Gekt0r 19.08.2008 14:02

Хм, действительно)
а как тогда быть? Как обернуть картинку в ссылку?

ZoNT 19.08.2008 16:50

img - это твоя картинка:
var parent = img.parentNode;
var a = parent.replaceChild(document.createElement('a'),img);
a.href = 'www.ru';
a.appendChild(img);

Gekt0r 19.08.2008 17:51

не работает, выдает ошибку:(
Я сделал по-другому. Все картинки в документе обрамлены тегом <p></p>
Я сделал выборку всех тегов <p>, определил, в каких из них заключены картинки, а потом заменил innerHTML, добавив туда ссылку

Однако есть еще вопрос, собственно, зачем я все это делаю. Я хочу, чтоб картинки при клике отображались "красиво", например, как тут: http://www.felix-riesterer.de/main/seiten/js_popup.html
я нашел несколько подобных решений, и для их всех надо, чтоб картинки были внутри ссылок. Так вот. Когда я вставляю ссылку на картинку вручную в редакторе документа, то скрипт отрабатывает нормально, и картинка открывается красиво. Когда же я сделал свою функцию, которая добавляет всем картинкам ссылки, то скрипт с этим не заработал. Не знаете, почему такое может быть?

ZoNT 19.08.2008 17:56

наверное он при загрузке документа пробегается по ссылкам с картинками и вешает на них обработчики (как вариант - я скрипт не смотрел и не хочу).

Gekt0r 19.08.2008 18:01

Цитата:

Сообщение от ZoNT (Сообщение 4749)
наверное он при загрузке документа пробегается по ссылкам с картинками и вешает на них обработчики (как вариант - я скрипт не смотрел и не хочу).

я смотрел, как я понял, именно так он и делает.
А почему может не работать тогда? Ведь моя функция вешает ссылки на картинки...

ZoNT 19.08.2008 18:08

Ну при загрузке документа у тебя же ещё нет ссылок? по чему будет пробегаться этот скрипт и вешать обработчики???

Gekt0r 19.08.2008 18:16

Цитата:

Сообщение от ZoNT (Сообщение 4752)
Ну при загрузке документа у тебя же ещё нет ссылок? по чему будет пробегаться этот скрипт и вешать обработчики???

Гм.. А как тогда можно сделать, чтоб моя функция разместила ссылки до этого скрипта?

Андрей Параничев 19.08.2008 18:19

Gekt0r,
Как вариант:
По load документа сначала устанавливать ссылки, а потом в этом же обработчике подключать нужный скрипт.

Gekt0r 19.08.2008 18:37

Цитата:

Сообщение от Андрей Параничев (Сообщение 4754)
Gekt0r,
Как вариант:
По load документа сначала устанавливать ссылки, а потом в этом же обработчике подключать нужный скрипт.

а как это можно сделать? Вот есть моя функция, которая вызывается в <body onload="func()">
и есть скрипт js_popup, который пробегает по документу и навешивает красивости на ссылки с картинками. Скрипт я добавлял просто <script type="text/javascript" src="js_popup/js_popup.js"></script>

Как его из моей функции-то вызвать:confused:

ZoNT 19.08.2008 18:47

фишка в том, что тебе придётся сторонний скрипт переделывать. Так как он вешает свою инициализацию на window.onload
То есть его по-любому надо вставлять в хэд. Соответственно неизвестно, чей онлоад выполнится первее.
Так что как вариант - расковырять и переделать его на ручную инициализацию. И эту ручную инициализацию запускать твоим скриптом после вставки всех ссылок.

Gekt0r 20.08.2008 12:24

А нельзя как-нибудь вставить мою функцию так, чтобы она пробегалась по всем картинками и вешала на них ссылки до скрипта?

ZoNT 20.08.2008 13:12

это зависит от того, как написан тот скрипт... посмотри, может получится...

Gekt0r 21.08.2008 11:57

Все, я разобрался. Я модифицировал тот скрипт, вставил туда свою функцию, чтоб она выполнялась сначала, плюс в паре мест пришлось кое-что подправить. Спасибо большое за советы, ребята, жаваскрипт - сила)


Часовой пояс GMT +3, время: 09:42.