【发布时间】:2018-04-03 09:46:00
【问题描述】:
我正在尝试创建一个切换按钮,当它处于活动状态时会触发一个功能。
此函数附加了一个超时,并将在给定时间后重新触发。
这应该只在按钮处于活动状态时发生,因此如果用户再次单击所述按钮,自动化应该停止。换句话说,如果用户已将切换按钮设置为“非活动”,则该功能应return
代码如下:
function autoSlides() {
slideIndex++;
showSlides(slideIndex);
setTimeout(autoSlides, 10000);
}
function plusSlides(n) {
showSlides(slideIndex += n);
}
function currentSlide(n) {
n--;
showSlides(slideIndex = n);
}
function showSlides(n) {
var i;
for (i = 0; i < slides.length; i++) {
if (slides[i].style.transform == "translateX(100%)") {
slides[i].style.display = "none";
} else if (slides[i].style.transform == "translateX(-100%)") {
slides[i].style.display = "inline-block";
}
slides[i].style.transform = "translateX(-100%)";
}
if (slideIndex >= slides.length) {
slideIndex = 0;
} else if (slideIndex < 0) {
slideIndex = slides.length;
}
slides[slidePrev].style.transform = "translateX(100%)";
slides[slideIndex].style.transform = "translateX(0)";
slidePrev = slideIndex;
}
.Slides {
position: absolute;
transform: translateX(-100%);
transition: transform 2s;
display: inline-block;
width: 100%;
height: 100%;
margin: 0;
}
.Slides-Images {
width: 100%;
height: 100%;
object-fit: cover;
}
#asktoggle-base {
height: auto;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
right: 0;
margin: 0 auto;
text-align: center;
}
#asktoggle {
font-size: 0.5em;
cursor: pointer;
color: white;
background-color: rgba(226, 208, 0, 0.6);
border-radius: 3px;
padding: 10px;
display: inline-block;
transition: background-color 0.5s linear;
}
.active,
#asktoggle:hover {
background-color: rgb(226, 208, 0);
}
<span class="Slides" style="transform:translateX(0)">
<img src="//placehold.it/1000?text=Gallery-1" class="Slides-Images">
</span>
<span class="Slides">
<img src="//placehold.it/1000?text=Gallery-2" class="Slides-Images">
</span>
<span class="Slides">
<img src="//placehold.it/1000?text=Gallery-3" class="Slides-Images">
</span>
<span class="Slides">
<img src="//placehold.it/1000?text=Gallery-4" class="Slides-Images">
</span>
<div id="asktoggle-base">
<span id="asktoggle">toggle slideshow</span>
</div>
我尝试创建另一个function 和do{} while() 循环,其中所述函数会将.active 类添加到按钮然后触发autoSlides() 函数,该函数将在.active 类中一直处于活动状态是按钮的一部分。遇到问题是我可以说的最低限度,这真的并没有以几种不同的方式工作。
我看到了this 的问题,答案在 jQuery 中,我宁愿避免使用它,因为我的其余脚本都在良好的 JavaScript 中。但如果需要,我想我可以用它做点什么。
【问题讨论】:
-
你看过
clearTimeout()吗? -
@Manav 这是个好主意,但我应该如何实现呢?
标签: javascript html css