请不要推荐 JQUERY - 我做这个练习是为了学习。
我已经实现了一个 JavaScript,它使用 10 秒的设定间隔在计时器上旋转图像 (_elementSlideChange)。我还为此添加了幻灯片功能,即 7 毫秒 (_slideImage)。
图像在页面加载时每 10 秒自动旋转一次,我还提供了下一个和上一个按钮,允许用户手动更改图像。
_elementSlideChange: function () {
var myString;
var myText;
for (var i = 0; i < this._imgArray.length; i++) {
var imageArr = "url(" + this._imgArray[i].src + ")";
var imageBg = this._imageHolder.style.background + "";
if (imageArr == imageBg) {
if (i == (this._imgArray.length - 1)) {
myString = "url(" + this._imgArray[0].src + ")";
myText = this._infoArray[0];
} else {
myString = "url(" + this._imgArray[(i + 1)].src + ")";
myText = this._infoArray[i + 1];
}
}
}
this._imageNextSlide.style.background = myString;
this._imageNextSlide.style.background);
this._infoElement.innerHTML = myText;
this._myTimer = setInterval(MyProject.Utils.createDelegate(this._slideImage, this), 7);
},
_slideImage: function () {
if (parseInt(this._imageHolder.style.width) >= 0 && parseInt(this._imageNextSlide.style.width) <= 450) {
this._imageHolder.style.backgroundPosition = "right";
this._imageHolder.style.width = (parseInt(this._imageHolder.style.width) - 1) + 'px';
console.log(this._imageNextSlide.style.background);
this._imageNextSlide.style.width = (parseInt(this._imageNextSlide.style.width) + 1) + 'px';
} else {
console.log("reached 0px");
if (parseInt(this._imageHolder.style.width) == 0) {
this._imageHolder.style.background = this._imageNextSlide.style.background;
this._imageHolder.style.width = 450 + 'px';
this._imageHolder === this._imageNextSlide;
this._imageHolder.className = "orginalImage";
this._imageNextSlide.style.width = 0 + "px";
this._imageNextSlide = this._dummyImageNextSlide;
this._imagesElement.appendChild(this._imageHolder);
this._imagesElement.appendChild(this._imageNextSlide);
clearInterval(this._myTimer);
}
clearInterval(this._myTimer);
clearInterval(this._elementSlideChange);
}
}
因此,当用户单击“下一步”箭头按钮时,会触发“单击”的事件侦听器。这将为当前显示的图像创建一个 div,并创建一个新的 div,其中将包含下一个图像。图像滑动和旋转正常工作(无论是onLoad
还是onClick
)。我遇到的问题是,如果我单击下一步按钮,当新的 div 图像滑入到位时,它会导致它陷入无限循环,因此与要显示的图像相同的 div 不断滑入,你越多单击下一步按钮,图像开始旋转的速度越快。
我已经尝试为图像旋转和滑块设置一个明确的间隔,但我确实理解我的代码是错误的,这会导致滑动图像的无限循环。而且我知道我即将完成功能。
谁能告诉我哪里出错了?还是我应该尝试以另一种方式实现滑动 DIV?
再次请不要推荐 jQuery。
并提前感谢您的帮助。
库什