使用数组和for循环的JavaScript旋转木马:为什么slideIndex得到;";第一圈之后?

使用数组和for循环的JavaScript旋转木马:为什么slideIndex得到;";第一圈之后?,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我正在尝试使用数组和for循环创建一个javascript旋转木马,其中包含不带jQuery的滚动图像 在4对象图像数组的末尾,“下一步按钮”返回数组[slideIndex=0] 类似地,当您在数组中的第一个对象上单击“previous”按钮时,它将返回数组中的最后一个对象 这个函数似乎几乎可以与我现在的代码一起工作。然而,它只工作一次。向后或向前跳过数组中的最后一个或第一个对象后,它不会继续按预期方向滚动 您能告诉我为什么在第一次跳过后,slideIndex没有继续与plusDivs()函数循

我正在尝试使用数组和for循环创建一个javascript旋转木马,其中包含不带jQuery的滚动图像

在4对象图像数组的末尾,“下一步按钮”返回数组[slideIndex=0]

类似地,当您在数组中的第一个对象上单击“previous”按钮时,它将返回数组中的最后一个对象

这个函数似乎几乎可以与我现在的代码一起工作。然而,它只工作一次。向后或向前跳过数组中的最后一个或第一个对象后,它不会继续按预期方向滚动

您能告诉我为什么在第一次跳过后,
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()"> &#10094; </button>
<button class="button" onclick="plusDivs()"> &#10095; </button>

❮ 
❯ 

非常感谢您的快速响应!我没有意识到全局变量可以在局部函数中重新分配为局部变量,或者对局部变量版本的更改不会自动更新全局变量。这也帮助我理解函数中参数的正确用法。谢谢!我没有足够的声誉点数达到+1,但我感谢您的回复。
<!-- Slideshow Buttons -->
<button class="button" onclick="minusDivs()"> &#10094; </button>
<button class="button" onclick="plusDivs()"> &#10095; </button>