Марк К.
8 повідомлень
#12 років тому
Приветствую!
Возникла проблема. На странице имеется несколько слайдеров, переключение картинок реализовано на js:

<script>
function changePhoto4(e){
arrimg = document.getElementById('ul4').getElementsByTagName('img');
for (i=0; i<arrimg.length; i++){
if(i==(arrimg.length-1)) {
obj = arrimg;
$("div a").removeClass('Active');
$(e).attr('src', $(obj).attr('big_src'));
$(obj).parent("a").attr('class', 'Active');
}
else {
obj = arrimg;
obj2 = arrimg;
if ($(e).attr('src') == $(obj).attr('big_src') ) {
$("div a").removeClass('Active');
$(e).attr('src', $(obj2).attr('big_src'));
$(obj2).parent("a").attr('class', 'Active');
break;
}
}
}
}
</script>


И 8 блоков с картинками, которые он должен переключать, отличающихся только по ID :
...
<ul id="ul4" style="width: 100% !important; ">
...


Вопрос: как реализовать вызов этого скрипта только один раз, чтобы разом обработать все блоки по ID?
Спасибо.
Максим Ф.
3195 повідомлень
#12 років тому
<script>
function changePhoto4(e, galID){
arrimg = document.getElementById(galID).getElementsByTagName('img');
for (i=0; i<arrimg.length; i++){
if(i==(arrimg.length-1)) {
obj = arrimg;
$("div a").removeClass('Active');
$(e).attr('src', $(obj).attr('big_src'));
$(obj).parent("a").attr('class', 'Active');
}
else {
obj = arrimg;
obj2 = arrimg;
if ($(e).attr('src') == $(obj).attr('big_src') ) {
$("div a").removeClass('Active');
$(e).attr('src', $(obj2).attr('big_src'));
$(obj2).parent("a").attr('class', 'Active');
break;
}
}
}
}
</script>

...
<ul id="ul1" style="width: 100% !important; ">
...
<ul id="ul2" style="width: 100% !important; ">
...

<script>
changePhoto4(e, 'ul1');
changePhoto4(e, 'ul2');
</script>

Технически код всё равно будет вызываться N раз, сократится только размер сгенерированного кода страницы.
Марк К.
8 повідомлень
#12 років тому
Спасибо!
По ходу возникла ещё одна проблема: если, к примеру, на странице 2 слайдера, то при открытии первого скроллятся изображения второго. Получается, скрипт просто при повторном выполнении перезаписывает результаты первого. Можно ли как-то решить эту проблему?
Максим К.
124 повідомлення
#12 років тому
Возьмите работу, выложите сюда задание и мы все вместе будет его решать.
Марк К.
8 повідомлень
#12 років тому
Пациент:
Откройте "Цифровой фотоаппарат" и кликните по его изображению.
Елена Б.
6863 повідомлення
#12 років тому
Мне кажется, предложение loginov123 было сарказмом...
Марк К.
8 повідомлень
#12 років тому
Может быть, но я надеюсь, что есть люди, которые смогут мне помочь с этой проблемой.
Максим К.
124 повідомлення
#12 років тому
Та вроде как сарказм.
Марк К.
8 повідомлень
#12 років тому
Я думал, что форумы созданы для коллективного обсуждения/решения мелких проблем... Видимо, я ошибался. Или, по крайней мере, только тут так.
Спасибо за помощь.
Елена Б.
6863 повідомлення
#12 років тому
Вот вы, не умея даже передать аргумент в функцию, взяли проект. Вместо того, чтоб восполнять недостаток теоретических знаний, просите бесплатной помощи. Если форум выполнит задачу за вас, вы получите положительный отзыв, который не отражает ваш реальный уровень. И с ним - новые заказы, которые вам не под силу. Что дальше? Опять на форум в поисках добродушных негров?
))
Марк К.
8 повідомлень
#12 років тому
floppox, с чего вы взяли, что это проект, за который я здесь взялся? Этот слайдер я делаю исключительно для собственных целей, а не для кого-либо. Не вижу смысла продолжать этот флуд. Суть ясна.