Я пытаюсь создать эффект скользящих изображений: Демо-версия онлайн link text.Слайд div внутри другого div-эффекта
Проблема заключается в том, что вы нажимаете быстро и беспорядочно на кнопках и не дожидаетесь окончания анимации, вызвав непредсказуемые результаты и даже прекратив работу. (и как только он остановился в середине 2 изображений ...)
Как я могу заставить его работать без ошибок?
Я знаю, что есть некоторые другие инструменты для скольжения, такие как jquery и другие подходы, такие как изменение атрибута position, а не атрибут scrollLeft. Но я хочу сделать это как есть, с scrollLeft, если это возможно, конечно.
Кодекс:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<style type="text/css">
body
{
padding:0px;
margin:0px;
}
#imageContainer
{
width: 500px;
position: relative;
}
#div
{
overflow: hidden;
white-space: nowrap;
}
#div img {
cursor: pointer;
vertical-align: bottom;
width: 500px;
padding:0px;
margin:0px;
display:inline;
}
</style>
<script type="text/javascript">
var scrollIntervalID;
var currentIndex=0;
function Scroll(ind){
var dir = ind ==currentIndex?0:ind<currentIndex?-1:1;
var steps = Math.abs(ind-currentIndex);
scrollIntervalID = setInterval(function(){
var i=(steps*10)-1;
return function(){
if (i <= 0)
clearInterval(scrollIntervalID);
var elm = document.getElementById("div");
elm.scrollLeft +=dir * 50;
i--;
document.getElementById("span").innerHTML=elm.scrollLeft;
}
}(), 15);
currentIndex=ind;
}
</script>
</head>
<body>
<div id="imageContainer">
<div id="div">
<img id="image1" src="Images/pic1.jpg" width="500px"/><img id="image2" src="Images/pic2.jpg" width="500px"/><img id="image3" src="Images/pic3.jpg" width="500px"/><img id="image4" src="Images/pic4.jpg" width="500px"/>
</div>
</div>
<div>
<input type="button" value="1" onclick="Scroll(0);"/>
<input type="button" value="2" onclick="Scroll(1);"/>
<input type="button" value="3" onclick="Scroll(2);"/>
<input type="button" value="4" onclick="Scroll(3);"/>
</div>
<span id="span"></span>
</body>
</html>
Ваш второй пункт был очень полезным, я проверил это несколько раз, и это, кажется, работает хорошо. На данный момент я соглашусь с этим ответом, и если последнее будет еще ошибкой, я снова открою этот вопрос, и мы попробуем кое-что еще, на что я надеюсь :) – mariki