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