Элементарный слайдер элементов.
Всем привет!
Есть отличный пример слайдера элементов на чистом js. Минимум кода и все работает почти как надо! Подскажите, пожалуйста, уважаемые знатоки... Что мне нужно добавить в скрипт, чтобы элементы менялись случайным образом!? На данный момент смена происходит по порядку с 1го по 4ый и по кругу дальше. При перезагрузке страницы в любом случае показывается первый элемент. Надо, чтобы в любом случае всегда показывался случайный и крутилось это все бесконечно! Буду признателен за помощь! P.S: Подключать немыслимые библиотеки и простыни кода НЕ предлагать! ссылка на слайдер: http://jsfiddle.net/rmBj9/1/ |
Felexan,
http://javascript.ru/Math.random |
Спасибо за оперативный ответ! Я догадывался, что именно эта функция нужна.
Дело в том, что я совершенно новичок в js и мне бы на примере моего скрипта все показать. Куда, чего и сколько! Наверное, не до конца правильно объяснил проблему! :)) |
Felexan,
посмотрите применение Math.random, а дальше делайте анимацию не на основе next, а на основе Math.random для всех "p" у "anidiv". Только выбирать "р" следует не все, а только непосредственно лежащие в "anidiv", что бы не подтащить "р" внутри "р", если таково написать случайно |
Случайный показ элементов (банеров)
Felexan,
:-?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
p {background-color:pink; cursor:pointer;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function () {
function rund(e, f) {
function d(b) {
for (var a = b.length - 1; 0 < a; a--) {
var c = Math.floor(Math.random() * (a + 1)),
d = b[c];
b[c] = b[a];
b[a] = d
}
return b
}
var a = [],
c = [];
for (i = 0; i < e; i++) a[i] = i + f;
d(a);
return function () {
var b = a.shift();
c.push(b);
1 == a.length && (d(c), a = a.concat(c), c = []);
return b
}
};
var $p = $('#anidiv p'), len = $p.length, num = rund(len, 0);
$p.not(':eq(' + num() + ')').hide();
function InOut() {
$("#anidiv p:visible").delay(5000).fadeOut(600, function () {
$p.eq(num()).fadeIn(600, InOut);
})
};
InOut();
$('#anidiv p').mouseover(function () {
$(this).stop(true, true);
});
$('#anidiv p').mouseout(function () {
InOut();
});
})
</script>
</head>
<body>
<div id="anidiv">
<p>Pause jquery animation on mouseover 1...</p>
<p>Pause jquery animation on mouseover 2...</p>
<p>Pause jquery animation on mouseover 3...</p>
<p>Pause jquery animation on mouseover 4...</p>
</div>
</body>
</html>
|
Спасибо! Но у вас подключена библиотека jquery... Это уже не то!
Вот, вроде бы получилось! http://jsfiddle.net/rmBj9/22/ Только возникла новая проблема: Нужно поставить условие, чтобы два раза подряд один и тот же не показывался! Я это забыл учесть сначала. |
Felexan,
Варианты: 1. сохраняйте на теге атрибут и проверяйте его значение 2. сохраняйте маркер на обработанные элементы в функции и проверяйте, обрабатывалось ли ранее.... Если попадает на тот, который уже был, переходите к следующему... |
А пример реализации можно, как оно должно выглядеть? Я просто вечно буду с этим разбираться(( Извините, если напрягаю...!
Просто полезное дело получается - многим пригодится. |
Цитата:
|
Felexan,
при использовании жквери, смотрите в сторону .data, .attr, без использования жквери, setAttribute Как мне кажется, это не та тема, в которой следует писать примеры работы с атрибутами и ифами, это все описано на этом ресурсе да и на множестве сторонних.... Достаточно воспользоваться поиском... Если не способны понять описанное словами, значит следует открывать и читать основы языка.. |
| Часовой пояс GMT +3, время: 21:25. |