Выполнение одного js несколько раз
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 повідомлень
8 повідомлень
#12 років тому
Может быть, но я надеюсь, что есть люди, которые смогут мне помочь с этой проблемой.
124 повідомлення
#12 років тому
Та вроде как сарказм.
8 повідомлень
#12 років тому
Я думал, что форумы созданы для коллективного обсуждения/решения мелких проблем... Видимо, я ошибался. Или, по крайней мере, только тут так.Спасибо за помощь.
6863 повідомлення
#12 років тому
Вот вы, не умея даже передать аргумент в функцию, взяли проект. Вместо того, чтоб восполнять недостаток теоретических знаний, просите бесплатной помощи. Если форум выполнит задачу за вас, вы получите положительный отзыв, который не отражает ваш реальный уровень. И с ним - новые заказы, которые вам не под силу. Что дальше? Опять на форум в поисках добродушных негров? ))