Ротатор нескольких изображений на JavaScript
Описание: Я уже писал про ротатор изображений на JavaScript, однако, меня попросили написать скрипт ротатора нескольких изображений на JavaScript. Я решил выполнить эту просьбу, так как такой скрипт может пригодиться многим. Разумеется, можно улучшить данный скрипт, сделав плавное изменение изображений, тогда получится уже очень интересное слайд-шоу на JavaScript.
Результат:
Коты | Собаки |
Код JavaScript (вставлять между тегами <head> и </head>):
<script type="text/javascript">
var counter = 0;
var delay = 3000; // Время показа слайда в миллисекундах
var path = "images/"; // Путь к картинкам
var cats = new Array("cat_1.jpg", "cat_2.jpg", "cat_3.jpg"); // Названия файлов 1-го ротатора
var dogs = new Array("dog_1.jpg", "dog_2.jpg", "dog_3.jpg"); // Названия файлов 2-го ротатора
function rotatorMany() {
document.getElementById("rotator_many_1").src = path + cats[counter];
document.getElementById("rotator_many_2").src = path + dogs[counter];
counter++;
if (counter == cats.length) counter = 0;
setTimeout(rotatorMany, delay);
}
</script>
Код HTML (вставлять между тегами <body onload="rotatorMany()"> и </body>):
<table style="text-align: center;">
<tr>
<td>Коты</td>
<td>Собаки</td>
</tr>
<tr>
<td>
<img src="images/javascript/cat_1.jpg" id="rotator_many_1" alt="" />
</td>
<td>
<img src="images/javascript/dog_1.jpg" id="rotator_many_2" alt="" />
</td>
</tr>
</table>
-
- Михаил Русаков
Комментарии (22):
Классно привлекает внимание! Чуть позже буду использовать данный код, только чуть переделаю.
Ответить
А у меня не работает...В чем причина????? картинки все в нужной папке images/javascript/картинка.jpg вот код: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Документ без названия</title> <script type="text/javascript"> var counter = 0; var delay = 3000; // Время показа слайда в миллисекундах var path = "images/"; // Путь к картинкам var cats = new Array("cat_1.jpg", "cat_2.jpg", "cat_3.jpg"); // Названия файлов 1-го ротатора var dogs = new Array("dog_1.jpg", "dog_2.jpg", "dog_3.jpg"); // Названия файлов 2-го ротатора function rotatorMany() { document.getElementById("rotator_many_1").src = path + cats[counter]; document.getElementById("rotator_many_2").src = path + dogs[counter]; counter++; if (counter == cats.length) counter = 0; setTimeout(rotatorMany, delay); } </script> </head> <body> <table style="text-align: center;"> <tr> <td>Коты</td> <td>Собаки</td> </tr> <tr> <td> <img src="images/javascript/cat_1.jpg" id="rotator_many_1" alt="" /> </td> <td> <img src="images/javascript/dog_1.jpg" id="rotator_many_2" alt="" /> </td> </tr> </table> </body> </html>
Ответить
var path = "images/"; // Путь к картинкам - отредактируйте это.
Ответить
а что в нем не так?
Ответить
У Вас же путь images/javascript/, но написано "images/" в скрипте.
Ответить
var path = "images/javascript/"; я так сделала, картинки все-равно не меняются=(
Ответить
я уже и сразу в массиве пробовала путь прописывать, все-равно не работает))
Ответить
Код HTML (вставлять между тегами <body onload="rotatorMany()"> и </body>). Обратите внимание на onload.
Ответить
ураааааааа) спасибо)) работает)
Ответить
подскажите вот картинка коты как зделать картинку чтоб ссылка на ней работала куда что подставить
Ответить
Чтобы картинка была ссылкой, можно сделать так: <a href="#"><img src="images/cat_1.jpg" alt="" /></a>
Ответить
Здравствуйте Михаил. Мне нужно поместить на одну страничку Ротатор нескольких изображений и Ротатор изображений, тоисть нужно чтоб на одной страничке было два слайд шоу, в прицепе я это сделав соединившы этот код <body onload="imageRotator(0); rotatorMany()"> Вот код странички: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Документ Без Имени</title> <script type="text/javascript"> var array = new Array( "slide_1.jpg", "slide_2.jpg", "slide_3.jpg", "slide_4.jpg", "slide_5.jpg", "slide_6.jpg", "slide_7.jpg", "slide_8.jpg", "slide_9.jpg", "slide_10.jpg", "slide_11.jpg", "slide_12.jpg", "slide_13.jpg", "slide_14.jpg", "slide_15.jpg", "slide_16.jpg" );//массив с путями к картинкам var delay = 2000; //задержка в миллисекундах function imageRotator(i) { var image = document.getElementById("rotator"); image.src = array[i]; i++; if (i == array.length) i = 0; setTimeout("imageRotator(" + i + ")", delay); } </script> <script type="text/javascript"> var counter = 0; var delay = 20000; // Время показа слайда в миллисекундах var path = ""; // Путь к картинкам var cats = new Array("slide_2.1.jpg", "slide_2.2.jpg", "slide_2.3.jpg"); // Названия файлов 1-го ротатора var dogs = new Array("slide_3.1.jpg", "slide_3.2.jpg", "slide_3.3.jpg"); // Названия файлов 2-го ротатора function rotatorMany() { document.getElementById("rotator_many_1").src = path + cats[counter]; document.getElementById("rotator_many_2").src = path + dogs[counter]; counter++; if (counter == cats.length) counter = 0; setTimeout(rotatorMany, delay); } </script> </head> <body onload="imageRotator(0); rotatorMany()"> <p> <img style="margin: 0 auto;" id = 'rotator' src = 'slide_16.jpg' alt = 'Ротатор изображений' width = '1000' height = '330' /> </p> <p> </p> <p> </p> <p> </p> <p> </p> <table style="text-align: center;"> <tr> <td>Коты</td> <td>Собаки</td> </tr> <tr> <td> <img src="slide_2.2.jpg" id="rotator_many_1" alt="" /> </td> <td> <img src="slide_3.2.jpg" id="rotator_many_2" alt="" /> </td> </tr> </table> <p> </p> </body> </html> Но есть одна проблема все картинки меняются одновременно, не смотря на то что я установил разные значения времени показа слайда 2000 и 20000 миллисекунд. подскажите пожалуйста как решить эту проблему?
Ответить
Переменную delay надо переименовать, например, в delay_1 и delay_2.
Ответить
Получилось, Большое вам спасибо Михаил.
Ответить
Можете подсказать какой добавить код чтоб была задержка смены изображений, например var time_out = 1- но он не работает.
Ответить
Запустить первый раз функцию не при загрузке, а через некоторое время. Через setimeout() будет удобнее всего.
Ответить
Не работает вставил код, и почему то слайды не меняются, как правильно сделать?: <script type="text/javascript"> var counter = 0; var delay_2 = 5000; // Время показа слайда в миллисекундах var setimeout(5) var path = ""; // Путь к картинкам var cats = new Array("slide_2.1.jpg", "slide_2.2.jpg", "slide_2.3.jpg"); // Названия файлов 1-го ротатора var dogs = new Array("slide_3.1.jpg", "slide_3.2.jpg", "slide_3.3.jpg"); // Названия файлов 2-го ротатора function rotatorMany() { document.getElementById("rotator_many_1").src = path + cats[counter]; document.getElementById("rotator_many_2").src = path + dogs[counter]; counter++; if (counter == cats.length) counter = 0; setTimeout(rotatorMany, delay_2); } </script>
Ответить
Убрать из body нужно onload, в конце страницы добавить вызов settimeout(500000, rotatorMany()); Через 500 секунд после загрузки начнётся показ слайдов.
Ответить
Добрый день! А как сделать плавный переход между изображениями, не меняя код html? В начале статьи ссылка дана, но там изображения в html код добавлены, это мне не особо подходит(
Ответить
Конкретно под Вашу задачу нет скрипта. А вот, как делается плавность, здесь можно посмотреть: http://myrusakov.ru/javascript-slide-image.html
Ответить
Якщо більше картинок і зменшити час буде відео.
Ответить
Классный ротатор, то что нужно, не подскажете как правильно сделать ротатор на 9 картинок с разным временем показа...
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.