Изменение изображения на странице HTML каждые несколько секунд
Я хочу менять изображения каждые несколько секунд, это мой код:
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>change picture</title>
<script type = "text/javascript">
function changeImage()
{
var img = document.getElementById("img");
img.src = images[x];
x++;
if(x >= images.length){
x = 0;
}
var timerid = setInterval(changeImage(), 1000);
} }
var images = [], x = 0;
images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";
</script>
</head>
<body onload = "changeImage()">
<img id="img" src="startpicture.jpg">
</body>
</html>
Моя проблема заключается в том, что она застряла на первом снимке!
Я также хотел попробовать перелистывать изображения с помощью предыдущих и следующих кнопок, но я понятия не имею, как это сделать.
Ответы
Ответ 1
Как я писал в комментарии, вам не нужно использовать оба setTimeout()
и setInterval()
, кроме того, у вас также синтаксическая ошибка (одна дополнительная }
). Исправьте свой код следующим образом:
(отредактировано, чтобы добавить две функции для принудительного отображения следующего/предыдущего изображения)
<!DOCTYPE html>
<html>
<head>
<title>change picture</title>
<script type = "text/javascript">
function displayNextImage() {
x = (x === images.length - 1) ? 0 : x + 1;
document.getElementById("img").src = images[x];
}
function displayPreviousImage() {
x = (x <= 0) ? images.length - 1 : x - 1;
document.getElementById("img").src = images[x];
}
function startTimer() {
setInterval(displayNextImage, 3000);
}
var images = [], x = -1;
images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";
</script>
</head>
<body onload = "startTimer()">
<img id="img" src="startpicture.jpg"/>
<button type="button" onclick="displayPreviousImage()">Previous</button>
<button type="button" onclick="displayNextImage()">Next</button>
</body>
</html>
Ответ 2
ниже будет изменяться ссылка и баннер каждые 10 секунд
<script>
var links = ["http://www.abc.com","http://www.def.com","http://www.ghi.com"];
var images = ["http://www.abc.com/1.gif","http://www.def.com/2.gif","http://www.ghi.com/3gif"];
var i = 0;
var renew = setInterval(function(){
if(links.length == i){
i = 0;
}
else {
document.getElementById("bannerImage").src = images[i];
document.getElementById("bannerLink").href = links[i];
i++;
}
},10000);
</script>
<a id="bannerLink" href="http://www.abc.com" onclick="void window.open(this.href); return false;">
<img id="bannerImage" src="http://www.abc.com/1.gif" width="694" height="83" alt="some text">
</a>
Ответ 3
Измените setTimeout("changeImage()", 30000);
на setInterval("changeImage()", 30000);
и удалите var timerid = setInterval(changeImage, 30000);
.
Ответ 4
Как и в текущей отредактированной версии сообщения, вы вызываете setInterval
на каждом конце изменения, добавляете новый "чейнджер" с каждой новой версией itertation. Это означает, что после первого запуска, один из них тикает в памяти, после 100 запусков, 100 разных чейнджеров меняют изображение 100 раз в секунду, полностью разрушая производительность и создавая запутанные результаты.
Вам нужно только "заправлять" setInterval
один раз. Удалите его из функции и поместите его внутри onload
вместо прямого вызова функции.
Ответ 5
Вы можете загружать изображения в начале и изменять атрибуты css для отображения каждого изображения.
var images = array();
for( url in your_urls_array ){
var img = document.createElement( "img" );
//here the image attributes ( width, height, position, etc )
images.push( img );
}
function player( position )
{
images[position-1].style.display = "none" //be careful working with the first position
images[position].style.display = "block";
//reset position if needed
timer = setTimeOut( "player( position )", time );
}
Ответ 6
Лучший способ обмениваться изображениями с помощью javascript с эскизами с вертикальным кликом слева
SCRIPT ФАЙЛ: функция swapImages() {
window.onload = function () {
var img = document.getElementById("img_wrap");
var imgall = img.getElementsByTagName("img");
var firstimg = imgall[0]; //first image
for (var a = 0; a <= imgall.length; a++) {
setInterval(function () {
var rand = Math.floor(Math.random() * imgall.length);
firstimg.src = imgall[rand].src;
}, 3000);
imgall[1].onmouseover = function () {
//alert("what");
clearInterval();
firstimg.src = imgall[1].src;
}
imgall[2].onmouseover = function () {
clearInterval();
firstimg.src = imgall[2].src;
}
imgall[3].onmouseover = function () {
clearInterval();
firstimg.src = imgall[3].src;
}
imgall[4].onmouseover = function () {
clearInterval();
firstimg.src = imgall[4].src;
}
imgall[5].onmouseover = function () {
clearInterval();
firstimg.src = imgall[5].src;
}
}
}
}