Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Множественное слайдшоу на одной странице (https://javascript.ru/forum/events/83600-mnozhestvennoe-slajjdshou-na-odnojj-stranice.html)

Neptunin 20.01.2022 21:42

Множественное слайдшоу на одной странице
 
Здравсвуйте друзья, имеется код для слайдшоу из указаной папки, у меня стоит задача сделать три таких слайдшоу из разных папок, "утроил код", слайды меняются, но хаотично, хотя при одном слайдшоу - слайды меняются по порядку, подскажите пожалуйста, куда копать.
<script type="text/javascript">
<?php
$images = array();
$folder = 'Rasporyagheniya_1/';
$array_to_js='var imgs=[';
$all_files = scandir($folder);
for ($i=2; $i<=sizeof($all_files)-1; $i++) { $array_to_js.='"'.$folder.$all_files[$i].'",'; }
echo substr($array_to_js,0,-1).'];';
?>

var n = 0;
var time = 800;
play  =setInterval("chgImg()", 5000);

function chgImg() {
$('#slide_show').fadeOut(time, function() {
  $(this).attr('src', imgs[n]).fadeIn(time);
});

n++;
if (n>=imgs.length) n = 0;
}

<?php
$images = array();
$folder = 'Pisma_2/';
$array_to_js = 'var imgs_2=[';
$all_files = scandir($folder);
for ($i=2; $i<=sizeof($all_files)-1; $i++) { $array_to_js.='"'.$folder.$all_files[$i].'",'; }
echo substr($array_to_js,0,-1).'];';
?>

var n = 0;
var time = 800;
play = setInterval("chgImg_2()", 5000);

function chgImg_2() {
$('#slide_show_2').fadeOut(time, function() {
  $(this).attr('src', imgs_2[n]).fadeIn(time);
});

n++;
if (n>=imgs_2.length) n = 0;
}

<?php
$images = array();
$folder = 'OTiPB_3/';
$array_to_js = 'var imgs_3=[';
$all_files = scandir($folder);
for ($i=2; $i<=sizeof($all_files)-1; $i++) { $array_to_js.='"'.$folder.$all_files[$i].'",'; }
echo substr($array_to_js,0,-1).'];';
?>

var n = 0;
var time = 800;
play = setInterval("chgImg_3()", 5000);

function chgImg_3() {
$('#slide_show_3').fadeOut(time, function() {
  $(this).attr('src', imgs_3[n]).fadeIn(time);
});

n++;
if (n>=imgs_3.length) n = 0;
}
</script>

Neptunin 20.01.2022 21:48

Результат вот такой, то есть картинки находит по порядку, но выдает странно, может одну и ту же показывать несколько раз подряд
<script type="text/javascript">
var imgs=["Rasporyagheniya_1/1.jpg","Rasporyagheniya_1/2.jpg","Rasporyagheniya_1/3.jpg","Rasporyagheniya_1/4.jpg","Rasporyagheniya_1/5.jpg","Rasporyagheniya_1/6.jpg"];
var n = 0;
var time = 800;
play  =setInterval("chgImg()", 5000);

function chgImg() {
$('#slide_show').fadeOut(time, function() {
  $(this).attr('src', imgs[n]).fadeIn(time);
});

n++;
if (n>=imgs.length) n = 0;
}

var imgs_2=["Pisma_2/1.jpg","Pisma_2/2.jpg","Pisma_2/3.jpg","Pisma_2/4.jpg"];
var n = 0;
var time = 800;
play = setInterval("chgImg_2()", 5000);

function chgImg_2() {
$('#slide_show_2').fadeOut(time, function() {
  $(this).attr('src', imgs_2[n]).fadeIn(time);
});

n++;
if (n>=imgs_2.length) n = 0;
}

var imgs_3=["OTiPB_3/1.jpg","OTiPB_3/2.jpg","OTiPB_3/3.jpg","OTiPB_3/4.jpg","OTiPB_3/5.jpg"];
var n = 0;
var time = 800;
play = setInterval("chgImg_3()", 5000);

function chgImg_3() {
$('#slide_show_3').fadeOut(time, function() {
  $(this).attr('src', imgs_3[n]).fadeIn(time);
});

n++;
if (n>=imgs_3.length) n = 0;
}
</script>

рони 20.01.2022 21:57

Neptunin,
https://javascript.ru/forum/misc/835...razheniya.html

Neptunin 20.01.2022 23:29

Со стилями нет проблем, все работает. Не работают слайды по очереди, может один и тот же несколько раз показываться.

рони 20.01.2022 23:54

Neptunin,
переменные по разному назовите, или оберните каждый код как показано ниже.
(код1)();(код2)();(код3)();

Neptunin 21.01.2022 17:39

Переменные изначально переименовал, оборачивание к сожалению не помогло. Скрипт перестает работать.

рони 21.01.2022 18:14

Neptunin,
так возьмите код предложенный выше #3

Neptunin 22.01.2022 00:12

Спасибо. Если одно слайдшоу - работает прекрасно, сделал три и все перестает работать. Если одинаковое время смены - не работает, если разное, меняет слайды, но опять как захочет, то есть такая же проблема, как и с предыдущим скриптом.
var coin = 1;
var changeBg = function() {
  $('.lf').css('background', 'url(Rasporyagheniya_1/' + coin++ + '.jpg)');
  if (coin > 3)
    coin = 1;
}
setInterval(changeBg, 3000);

var coin = 1;
var changeBg = function() {
  $('.cn').css('background', 'url(Pisma_2/' + coin++ + '.jpg)');
  if (coin > 3)
    coin = 1;
}
setInterval(changeBg, 3000);

var coin = 1;
var changeBg = function() {
  $('.rf').css('background', 'url(OTiPB_3/' + coin++ + '.jpg)');
  if (coin > 3)
    coin = 1;
}
setInterval(changeBg, 3000);

рони 22.01.2022 00:25

Neptunin,
а сделать 1 функцию для всех слайдеров или разные переменные объявить или обернуть код каждого слайдера?
выкинуть строки с 8 по 23, строки 11 и 19 поставить после строки 3.


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