Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Управление ячейкой таблицы из другого окна


Автор: kursor 3.12.2006, 11:31
Вопрос такой: У меня есть окно с формой, там есть ссылка (которая расположена в ячейке таблицы) - выбрать фотографию,  при нажатии на эту ссылку открывается новое окно с фотографиями из определенной папки сервера. (это у меня все работает)
Можно ли сделать так, чтобы при нажатии на фотографию в этом вновь открывшимся окне, это вновь открывшееся окно закрывалось, а в окне с формой (с той самой ячейкой таблицы в которой была ссылка с предложением выбрать фотографию), ссылка выбрать фотографию пропала бы, а вместо нее появилась бы выбранная фотография?

Автор: vasac 3.12.2006, 12:40
Отчего же нельзя? Нужно только немного подумать головой.

1. Нажатие на элемент страницы (в т.ч. на изображение) отлавливается событием onclick.
2. Закрытие окна осуществляется через window.close()
3. Обращение к родительскому окну через window.opener
4. Замена содержимого элемента (например внутри divа поменять ссылку на фотографию) осуществляется через DOM, либо через innerHTML.

Дальше осилите? )

Автор: kursor 3.12.2006, 16:55
Да вобщем-то наверное смогу. Если все-таки есть примеры на использование innerHTML и window.opener, то буду Вам благодарен.

Автор: vasac 3.12.2006, 17:23
Примерные наброски

1. Ловим щелчок:
Код

<img src="/path/to/img.jpg" onclick="return clickPhoto('/path/to/img.jpg')" />


При нажатии на фотку вызывается функция clickPhoto с путем к фотке в параметре.

2. Что нужно сделать при нажатии?
- отправить сообщение родительскому окну
- закрыть дочернее.

Код

function clickPhoto( path ) {
    window.opener.selectPhoto( path );
    window.close();
}


сообщение посылаем путем вызова в родительском окне функции selectPhoto() опять таки с путем к фотке.

3. В родительском окне нужно определить эту selectPhoto. Что там нужно сделать? Удалить ссылку, вставить вместо нее фотку.
Пусть ссылка лежит в диве:
Код

<div id="divPhoto"><a href="...">Выбрать фотографию</a></div>

Обработчик:
Код

function selectPhoto( path ) {
    var d = document.getElementById( "divPhoto" ); // нашли див
    while ( d.firstChild ) d.removeChild( d.firstChild ); // Очистили его
    var img = document.createElement( "img" ); // Создали картинку
    img.setAttribute( "src", path ); // Установили путь
    d.appendChild( img ); // Запихнули в div



Автор: kursor 3.12.2006, 17:33
Спасибо дружище, щас буду разбираться.  smile 

Автор: kursor 3.12.2006, 18:56
В окне которое содержит фотографии из папки, в функции 
Цитата

function clickPhoto( path ) {
    window.opener.selectPhoto( path );
    window.close();
}



ругается
Цитата

Error: window.opener is Null or not an object.


Может я не правильно окно с фотографиями открываю. Я использую window.open.

Может мне его как-нибудь жестко прописать и обращаться к нему по имени окна (посоветуйте как это можно сделать. В любом случае сейчас буду экспериментировать.)

Добавлено @ 19:05 
Вроде заработало, правда вместо картинок рисует картинки с крестиком. Сейчас с путями разберусь и ОК!

Спасибо тебе еще раз добрый человек.

Автор: kursor 3.12.2006, 19:18
Все ОК!

И еще вопрос, можно ли как нибудь определить ширину и высоту фотографии? Посредством ASP или JavaScript?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)