单击手动上一步/下一步按钮后,Javascript幻灯片放映速度过快

单击手动上一步/下一步按钮后,Javascript幻灯片放映速度过快,javascript,php,html,css,Javascript,Php,Html,Css,我已经复制和修改了一个W3schools代码,现在它只是漏洞了。 我已经设置了2000(2秒)的间隔,它会以应有的方式滑动图像,但是当我单击下一个或上一个按钮时,它只是滑动得太快,有时它会在1秒内滑动3次,或者在没有单击的情况下滑动1-2次。(看起来它在某些零件上滑动得很快(单击后) 在我点击按钮几次之后,它就会以惊人的速度滑动,直到我刷新页面,只要我不点击任何上一个或下一个按钮,页面就会正常工作 下面是HTML代码 <div class="main-slideShow-

我已经复制和修改了一个W3schools代码,现在它只是漏洞了。 我已经设置了2000(2秒)的间隔,它会以应有的方式滑动图像,但是当我单击下一个或上一个按钮时,它只是滑动得太快,有时它会在1秒内滑动3次,或者在没有单击的情况下滑动1-2次。(看起来它在某些零件上滑动得很快(单击后)

在我点击按钮几次之后,它就会以惊人的速度滑动,直到我刷新页面,只要我不点击任何上一个或下一个按钮,页面就会正常工作

下面是HTML代码

    <div class="main-slideShow-div">
    <div class="slideshow-container">
        <div class="my-slides">
                <img class="pic" src="images/animals/dog1.jpg">
        </div>

        <div class="my-slides">
                <img class="pic" src="images/animals/dog2.jpg">
        </div>

        <div class="my-slides">
                <img class="pic" src="images/animals/dog3.jpg">
        </div>
    
        <img class="prev" onclick="plusSlides(-1)" src="images/rightArrow.png" alt="picture">
        <img class="next" onclick="plusSlides(1)" src="images/leftArrow.png" alt="picture">
        
        <div class="slider-div" style="text-align:center">
            <div class="line" onclick="slideIndicator(1)"></div>
            <div class="line" onclick="slideIndicator(2)"></div>
            <div class="line" onclick="slideIndicator(3)"></div>
        </div>
    </div>
    </div>
    <script src="javascript1.js"></script>

下面是JavaScript代码

        var slideIndex = 1;
        showSlides(slideIndex);

        // Next/previous controls
        function plusSlides(n) 
        {
            showSlides(slideIndex += n);
        }

        // Thumbnail image controls
        function slideIndicator(n) 
        {
            showSlides(slideIndex = n);
        }

        function showSlides(n) 
        {
            var i;
            var slides = document.getElementsByClassName("my-slides");
            var line = document.getElementsByClassName("line");
            slideIndex++;
            if (slideIndex > slides.length) 
            {
                slideIndex = 1
            }
            if (n < 1) 
            {
                slideIndex = slides.length
            }
            for (i = 0; i < slides.length; i++) 
            {
                slides[i].style.display = "none";
            }
            for (i = 0; i < line.length; i++) 
            {
                line[i].className = line[i].className.replace(" active", "");
            }
            slides[slideIndex-1].style.display = "block";
            line[slideIndex-1].className += " active";
            setTimeout(showSlides, 2000);
        }
var slideIndex=1;
放映幻灯片(幻灯片索引);
//下一个/上一个控件
函数加滑块(n)
{
放映幻灯片(幻灯片索引+=n);
}
//缩略图图像控件
功能滑块指示器(n)
{
放映幻灯片(幻灯片索引=n);
}
功能演示幻灯片(n)
{
var i;
var slides=document.getElementsByClassName(“我的幻灯片”);
var line=document.getElementsByClassName(“行”);
slideIndex++;
如果(幻灯片索引>幻灯片长度)
{
slideIndex=1
}
if(n<1)
{
slideIndex=slides.length
}
对于(i=0;i
我知道它使滑块增加了太多次,但我不知道在哪里

很抱歉问了一个琐碎的代码,我想我应该可以理解问题所在,但我刚刚开始使用javascript

还有一个问题:开头的幻灯片是什么?如果它是一个全局变量,那么以后如何将其作为函数调用

任何帮助都将不胜感激D


111
112
113
1.
2.
3.
var slideIndex=1;
放映幻灯片(幻灯片索引);
//下一个/上一个控件
函数plusSlides(){
放映幻灯片(slideIndex++);
}
函数(){
放映幻灯片(幻灯片索引--);
}
//缩略图图像控件
功能滑块指示器(n){
放映幻灯片((幻灯片索引=n));
}
功能演示幻灯片(n){
var i;
var slides=document.getElementsByClassName(“我的幻灯片”);
var line=document.getElementsByClassName(“行”);
如果(slideIndex>=slides.length){
slideIndex=1;
}else if(slideIndex

111
112
113
1.
2.
3.
var slideIndex=1;
放映幻灯片(幻灯片索引);
//下一个/上一个控件
函数plusSlides(){
放映幻灯片(slideIndex++);
}
函数(){
放映幻灯片(幻灯片索引--);
}
//缩略图图像控件
功能滑块指示器(n){
放映幻灯片((幻灯片索引=n));
}
功能演示幻灯片(n){
var i;
var slides=document.getElementsByClassName(“我的幻灯片”);
var line=document.getElementsByClassName(“行”);
如果(slideIndex>=slides.length){
slideIndex=1;
}else if(slideIndex
所以我看了一下w3schools幻灯片,似乎您已经修改了它

根据您的问题,您正在
showsiles
函数中递增
slideIndex
。您能告诉我,为什么要增加
幻灯片索引
?所以我相信这就是它增加的地方

另外,在函数的末尾,你有一个设置超时的函数,它应该延迟函数本身,它应该像这样设置超时(showSlides(),2000)
而不是
设置超时(showSlides,2000)
如果你正在调用函数,请使用括号
()
,你也可以参考它

关于你的最后一个问题

开头的幻灯片是什么

它不是一个全局变量

全局变量是可供整个文档访问的变量,首先用关键字var、let、const声明


这只是对showSlides
函数的一个简单函数调用,因此我查看了w3schools幻灯片,似乎您已经修改了它