Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2009, 14:52
Новичок на форуме
Отправить личное сообщение для fed0R Посмотреть профиль Найти все сообщения от fed0R
 
Регистрация: 01.07.2009
Сообщений: 7

Проблема с "раскрывающимися" картинками.
Доброго времени суток всем!

Помогите, пожалуйста, решить такую проблему с "раскрывающимися" картинками:
в документе html есть несколько div'ов (с id="visible1" , id="visible2" , id="visible3" и т.д.), содержащих превьюшки картинок. В коде html сразу за каждым из них идёт по одному div'у (с id="hidden1" , id="hidden2" , id="hidden3" и т.д. и свойством style="display:none" для каждого, то есть первоначально они скрыты), содержащему большое изображение. Нужно добиться эффекта, чтобы при клике на div с превьюшкой открывался div с целым изображением.

Я попробовал такую штуку:

document.getElementById('visible1').onclick = function() {
document.getElementById('hidden1').style.display = 'block';
}

Вроде бы работает, но тогда нужно для каждого div'а прописывать свой кусок кода, что неправильно. А можно ли как-нибудь автоматизировать это, например, с помощью переменных?

Огромное спасибо всем ответившим!))
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2009, 01:02
Новичок на форуме
Отправить личное сообщение для fed0R Посмотреть профиль Найти все сообщения от fed0R
 
Регистрация: 01.07.2009
Сообщений: 7

Сам нашёл ответ на этот вопрос. Вот код JavaScript'а, который у меня получился:

window.onload = function() {

for(var i = 1; i; i++) { //цикл исполняется до тех пор, пока i существует

document.getElementById('visible' + i).onclick = function() { //все div'ы с id='visible1', 'visible2' и т.д.

var z = this.id.charAt(this.id.length - 1); //извлекаем последний символ (цифру) из id='visible1', 'visible2' и т.д.

var S = document.documentElement.scrollTop; //значение величины вертикальной прокрутки окна

document.getElementById('hidden' + z).style.left = 25 + 'px'; //присваеваем эл-ам с id='hidden1', 'hidden2' и т.д. отступ от левого края окна, равный 25 px

document.getElementById('hidden' + z).style.top = (25 + S) + 'px'; //присваеваем эл-ам с id='hidden1', 'hidden2' и т.д. отступ от верхнего края окна, равный 25 px

document.getElementById('hidden' + z).style.display = 'block'; //делаем видимыми эл-ты с id='hidden1', 'hidden2' и т.д.

return false;

}

document.getElementById('close' + i).onclick = function() {

var y = this.id.charAt(this.id.length - 1);

document.getElementById('hidden' + y).style.display = 'none';

return false;

}

}

}


Осталось решить два вопроса:
- ie6 почему-то пишет "ошибка на странице", хотя всё работает;
- google chrome, видимо, не понимает свойство scrollTop, потому что все раскрывающиеся блоки распологаются в самом верху страницы, высота прокрутки не учитывается.

Кто подскажет ответ, тому буду благодарен))

P.S. В опере и мозилле работает.
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2009, 02:51
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от fed0R
- ie6 почему-то пишет "ошибка на странице", хотя всё работает;
поставь/включи отладчик

Сообщение от fed0R
Кто подскажет ответ, тому буду благодарен))
а кто не подскажет?

p.s. а почему бы просто не менять img.src
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2009, 12:35
Новичок на форуме
Отправить личное сообщение для fed0R Посмотреть профиль Найти все сообщения от fed0R
 
Регистрация: 01.07.2009
Сообщений: 7

Кто не подскажет, тому благодарен не буду.
x-yuri, поподробнее про смену img.src можно? Что ты имеешь в виду?
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2009, 14:32
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

вот так можно изменить картинку, соответствубщую тэгу img:
img.src='/путь/к/картинке';
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2009, 22:08
Новичок на форуме
Отправить личное сообщение для fed0R Посмотреть профиль Найти все сообщения от fed0R
 
Регистрация: 01.07.2009
Сообщений: 7

x-yuri, насколько я понимаю, этот способ хорош для "подсветки" картинок. А в моём случае у каждой большой раскрывающейся картинки была подпись, то есть тут простой сменой не обойтись. В любом случае, вся загвоздка была в написании цикла, чтобы не приходилось переписывать скрипт для каждой картинки, ведь их может быть несколько десятков...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с сабмит mapt Events/DOM/Window 1 15.06.2009 13:45
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47
проблема с обработкой DIV nerik AJAX и COMET 2 22.08.2008 17:40
Проблема с маркером kostian02 Общие вопросы Javascript 0 23.06.2008 16:10
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56