使用数组和for循环的JavaScript旋转木马:为什么slideIndex得到;";第一圈之后?
我正在尝试使用数组和for循环创建一个javascript旋转木马,其中包含不带jQuery的滚动图像 在4对象图像数组的末尾,“下一步按钮”返回数组[slideIndex=0] 类似地,当您在数组中的第一个对象上单击“previous”按钮时,它将返回数组中的最后一个对象 这个函数似乎几乎可以与我现在的代码一起工作。然而,它只工作一次。向后或向前跳过数组中的最后一个或第一个对象后,它不会继续按预期方向滚动 您能告诉我为什么在第一次跳过后,使用数组和for循环的JavaScript旋转木马:为什么slideIndex得到;";第一圈之后?,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我正在尝试使用数组和for循环创建一个javascript旋转木马,其中包含不带jQuery的滚动图像 在4对象图像数组的末尾,“下一步按钮”返回数组[slideIndex=0] 类似地,当您在数组中的第一个对象上单击“previous”按钮时,它将返回数组中的最后一个对象 这个函数似乎几乎可以与我现在的代码一起工作。然而,它只工作一次。向后或向前跳过数组中的最后一个或第一个对象后,它不会继续按预期方向滚动 您能告诉我为什么在第一次跳过后,slideIndex没有继续与plusDivs()函数循
slideIndex
没有继续与plusDivs()
函数循环吗
let slides_array=document.getElementsByClassName(“mySlides”);
设slideIndex=0;
showDivs(slideIndex);
函数plusDivs(n){
slideIndex+=n;
showDivs(slideIndex);
}
函数showDivs(slideIndex){
让我;
如果(slideIndex>(slides\u array.length-1)){
slideIndex=0;
};
如果(slideIndex<0){
slideIndex=(slides\u array.length-1);
};
对于(i=0;i
由于您有一个全局变量slideIndex
,因此不应将其作为函数参数传递,因为这样会创建一个同名的局部变量,但对其进行任何重新分配都不会影响全局变量
let slides_array=document.getElementsByClassName(“mySlides”);
设slideIndex=0;
showDivs(slideIndex);
函数plusDivs(n){
slideIndex+=n;
showDivs();///
Duj和Trincot提到的范围问题是这里的关键问题。将slideIndex
的重置移出showDivs
解决了这个问题
创建更多自解释代码的一种方法是将plusDivs
更改为两个函数,一个函数递增(plusDivs
),另一个函数递减(minusDivs
)。然后可以从这些函数中更新slideIndex
。
(这两个函数用于更新slideIndex
,这两个函数非常酷,并且易于实现)
let slides_array=document.getElementsByClassName(“mySlides”);
设slideIndex=0;
showDivs(slideIndex);
函数plusDivs(){
slideIndex=slideIndex==slides\u array.length-1?0:slideIndex+1;
showDivs(slideIndex);
}
函数minusDivs(){
slideIndex=slideIndex==0?slides\u array.length-1:slideIndex-1;
showDivs(slideIndex);
}
函数showDivs(幻灯片索引){
对于(i=0;i
然后可以如下方式更新HTML:
<!-- Slideshow Buttons -->
<button class="button" onclick="minusDivs()"> ❮ </button>
<button class="button" onclick="plusDivs()"> ❯ </button>
❮
❯
非常感谢您的快速响应!我没有意识到全局变量可以在局部函数中重新分配为局部变量,或者对局部变量版本的更改不会自动更新全局变量。这也帮助我理解函数中参数的正确用法。谢谢!我没有足够的声誉点数达到+1,但我感谢您的回复。
<!-- Slideshow Buttons -->
<button class="button" onclick="minusDivs()"> ❮ </button>
<button class="button" onclick="plusDivs()"> ❯ </button>