javascript - Javascript 幻灯片如何使其更干燥
问题描述
我在 Javascript 中创建了一个简单的自动/手动幻灯片,但我需要帮助以使其更干燥。
这是我的 Javascript 代码:
let image = document.getElementById('slideImg');
const button = document.querySelectorAll('.btn');
const imageArray = ['Images/baby.jpg', 'Images/botez-leagan.jpg', 'Images/tata.jpg'];
let i = 0;
let time = 5000;
loadEventHandlers();
window.onload= autoSlide;
function loadEventHandlers(){
button[0].addEventListener('click', changeImg);
button[1].addEventListener('click', changeImg);
}
function autoSlide(){
image.classList.add('animate');
image.src = imageArray[i];
if(i < imageArray.length - 1){
i++;
}else{
i = 0;
}
console.log(image);
setTimeout("autoSlide()", time);
}
function changeImg(){
image.src = imageArray[i];
image.classList.add('animate');
if(i < imageArray.length - 1){
i++;
}else {
i=0;
}
以及相关的 HTML
<div class="gallery">
<div class="mySlides">
<img src="" class="slide" id="slideImg">
</div>
<a class="prev btn" >❮</a>
<a class="next btn" >❯</a>
</div>
我最初考虑将超时功能与单击事件结合起来,但是,我不知道如何检查类似这样的内容:“如果按钮已被单击,则更改图像”和“如果按钮尚未被单击,请等待 X秒并更改图像”以及“如果单击按钮等待 x 秒并且如果尚未单击按钮,则更改图像”。
我还想在每次图像更改时重置动画,但我不确定是否可以在 autoSlide() 函数中添加超时函数。
任何帮助都感激不尽!
谢谢你,波格丹
解决方案
推荐阅读
- swift - 多个 UITextFields 在 UIAlertController 中未正确显示
- mongodb - Spock:模拟 mongodb 批量更新,数组比较失败
- pine-script - 代码之间的时区转换
- java - Spring Boot 中的自签名证书和 SSL
- sql - 为什么 STATISTICS_NORECOMPUTE 会自行开启?
- ruby-on-rails - Rails gem resque-loner NameError(未初始化的常量 Resque::Plugins::UniqueJob)
- python - 在 python 中关闭异步服务器时出错
- excel - 每次使用 CommandButton_click 选择不同的单元格
- r - 使用 Reversible-Jump MCMC 贝叶斯方法在 R 中更改点包
- javascript - 如何降低画布动画的速度?