02.02.2014, 23:49
|
Аспирант
|
|
Регистрация: 22.11.2013
Сообщений: 39
|
|
Проблема реализации небольшого слайдера
Здравствуйте, нужно прописать некий слайдер. Задача выглядит так:
Имеется массив с некоторым количеством элементов. Нужно по очереди доставать элемент из массива, выводить его на экран, далее через заданный интервал данный элемент исчезает и цикл повторяется (выводится следующий элемент массива и т.д.). При этом, после последнего элемента снова должен выводиться первый, т.е. процесс должен замыкаться.
Так и не смог доработать цикл
|
|
03.02.2014, 00:24
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Иззет,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body> <p></p><p></p><p></p>
<script>
var p = document.querySelectorAll('p')
var arr = [1,2,3], n = 0;
function slider()
{
p[0].innerHTML=arr[n];
n++;
if(n == arr.length) n = 0;
window.setTimeout(slider, 1000)
};
var arr1 = ['раз','два','три'], n1 = 0;
function slider1()
{
p[1].innerHTML=arr1[n1];
n1 = ++n1%arr.length;
window.setTimeout(slider1, 1000)
};
var arr2 = ['|','||','|||'], n2;
function slider2()
{
n2 = arr2.shift();
arr2.push(n2)
p[2].innerHTML=n2;
window.setTimeout(slider2, 1000)
};
slider();
slider1();
slider2();
</script>
</body>
</html>
|
|
03.02.2014, 19:17
|
Аспирант
|
|
Регистрация: 22.11.2013
Сообщений: 39
|
|
Спасибо. Адаптировал ваш код, ещё проблема вышла: Дело в том, что элемент массива плавно выводиться и плавно исчезать. Попробовал дописать код, но анимация работает только на 1-ом элементе.
|
|
04.02.2014, 01:28
|
Аспирант
|
|
Регистрация: 22.11.2013
Сообщений: 39
|
|
Взял за основу ваш код, получилось так:
n = 0;
function slider() {
$('.visible').text(arr[n]).hide().show(500).delay(1500).fadeOut(1000);
n++;
if(n == arr.length) n = 0;
window.setTimeout(slider, 3000)
};
slider();
Дело в том, что данную функцию нужно синхронизировать по времени с другой (с интервалом в 2 сек, та функция сменяет изображения в течение 1 сек). Но после первого цикла функция slider(); начинает отставать по времени, с чем это связано ?
|
|
04.02.2014, 01:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Иззет,
исключите window.setTimeout и добавьте slider в fadeOut будет вам полная синхронизация
|
|
04.02.2014, 01:39
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Иззет,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<style type="text/css">
.visible{
color: #FF0000;
font-size: 24px;
text-decoration: none
}
</style>
</head>
<body>
<a href="#" class="visible">test</a>
<script>
var arr = [1,2,3,4,5]
n = 0;
function slider() {
$('.visible').text(arr[n]).show(500).delay(1500).fadeOut(1000,slider);
n++;
if(n == arr.length) n = 0;
};
slider();
</script>
</body>
</html>
|
|
04.02.2014, 01:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Иззет,
наверно я вас не понял но 2 слайдера сложно синхронизировать -- Минимальная задержка таймера делайте всё одним слайдером
|
|
04.02.2014, 12:10
|
Аспирант
|
|
Регистрация: 22.11.2013
Сообщений: 39
|
|
Да, в этом вся загвоздка, потому что цифры я сопоставил точно. Спасибо за помощь и ссылку.
|
|
|
|