javascript - 如何正确使用 onload 方法使我的幻灯片切换仅在图像加载延迟加载时滑动?
问题描述
要继续我的上一个问题,我想让我的幻灯片仅在图片加载后更改幻灯片。我尝试了以下方法,但它似乎没有按预期工作,因为它只是在开始时跳过幻灯片:
HTML:
<div style="margin-bottom: 30px;">
<img class="slider" src="graphics/slider1.webp" onload="changeSlide(1);">
<div class="slider-text" id="slidert1">Text here.</div>
<img loading="lazy" class="slider" src="graphics/slider2.webp" onload="changeSlide(1)">
<img loading="lazy" class="slider" src="graphics/slider3.webp" onload="changeSlide(1)">
<img loading="lazy" class="slider" src="graphics/slider4.webp" onload="changeSlide(1)">
<img loading="lazy" class="slider" src="graphics/slider5.webp" onload="changeSlide(1)">
<img loading="lazy" class="slider" src="graphics/slider6.webp" onload="changeSlide(1)">
<button class="slider-button slider-black slider-display-left" onclick="changeSlide(-1)">❮</button>
<button class="slider-button slider-black slider-display-right" onclick="changeSlide(1)">❯</button>
</div>
JS:
var slideIndex = 0;
document.querySelector('.slider').forEach(function(img){
img.addEventListener('load', changeSlide(1);
});
carousel();
function carousel() {
var i;
var x = document.getElementsByClassName("slider");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
slideIndex++;
if (slideIndex > x.length) {slideIndex = 1}
x[slideIndex-1].style.display = "block";
setTimeout(carousel, 5000); // Change image every 5 seconds
}
function changeSlide(n) {
showDivs(slideIndex += n);
}
function showDivs(n) {
var i;
var x = document.getElementsByClassName("slider");
if (n > x.length) { slideIndex = 1 }
if (n < 1) { slideIndex = x.length }
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
x[i].style.width = "100%";
}
x[slideIndex - 1].style.display = "block";
}
此代码的用例是当 2G 连接速度非常慢的移动用户开始下载图片时,幻灯片在图片完成加载之前开始切换。因此,实施了 onload 的解决方案,以便仅在图像完全加载时(延迟后)才开始切换。
解决方案
推荐阅读
- python - json 文件不显示整个数据
- c# - 在 Debian 10 上找不到类型或命名空间名称“System”(您是否缺少 using 指令或程序集引用?)?
- django - 带有斜杠的 mailto URL 是否仍然有效?
- c# - 如何用 C# 连接 kusto 数据库?
- firebase - FirebaseAuth.instance.verifyPhoneNumber 无法正常工作 - Flutter
- r - 为什么我的基因 ID 没有显示为一列?
- python - 在 Python 中跨多个独立字段返回最佳匹配行
- go - 切片文字和制作切片之间的行为有区别吗?
- javascript - 来自选择器的值不适用于 Formik 和 Yup 验证
- azure - Azure Ad b2c msal Android