javascript - javascript上的多个自动幻灯片问题
问题描述
我是 Javascript 的绝对新手,但我试图将三个独立的自动幻灯片放在同一页面上。我从 W3Schools 中找到了一些有用的链接(https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_slideshow_auto & https://www.w3schools.com/w3css/tryit.asp?filename= tryw3css_slideshow_rr),但是当使用任何一个时,我不能将所有三个幻灯片包含在一起,或者如果我重复相同的<script>
三次(更改document.getElementsByClassName
) 所有幻灯片似乎都崩溃了。我还为多个幻灯片找到了一些选项,但我不知道如何使它们自动化。CSS 没问题,我只是想不出脚本中的组合来使所有三个幻灯片同时自动工作。
提前致谢!
<script>
var slideIndex = 0;
showSlides();
function showSlides() {
var i;
var slides = document.getElementsByClassName("slide1", "slide2", "slide3");
var dots = document.getElementsByClassName("dot");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {slideIndex = 1}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " active";
setTimeout(showSlides, 2000); // Change image every 2 seconds
}
</script>
<script>
var myIndex = 0;
carousel();
function carousel() {
var i;
var x = document.getElementsByClassName("slide1");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
myIndex++;
if (myIndex > x.length) {myIndex = 1}
x[myIndex-1].style.display = "block";
setTimeout(carousel, 2000); // Change image every 2 seconds
}
</script>
<div id="container1">
<img id="aa" class="slide1" src="id1.png">
<img id="bb" class="slide1" src="id2.png">
<img id="cc" class="slide1" src="id3.png">
</div>
<div id="container2">
<img id="dd" class="slide2" src="cr1.png">
<img id="ee" class="slide2" src="cr2.png">
<img id="ff" class="slide2" src="cr3.png">
</div>
<div id="container3">
<img id="ab" class="slide3" src="id1.png">
<img id="hh" class="slide3" src="id2.png">
<img id="ii" class="slide3" src="id3.png">
</div>
解决方案
我有同样的问题,我给每个幻灯片一个不同的类,然后我为每个类包含一个单独的函数,然后我通过将每个函数包装在下面来隔离它
;(功能() {
JS代码
})()
我已经编辑了你的代码,所以它现在应该可以工作了:)
<div id="container1">
<img id="aa" class="slide1" src="id1.png">
<img id="bb" class="slide1" src="id2.png">
<img id="cc" class="slide1" src="id3.png">
</div>
<div id="container2">
<img id="dd" class="slide2" src="cr1.png">
<img id="ee" class="slide2" src="cr2.png">
<img id="ff" class="slide2" src="cr3.png">
</div>
<div id="container3">
<img id="ab" class="slide3" src="id1.png">
<img id="hh" class="slide3" src="id2.png">
<img id="ii" class="slide3" src="id3.png">
</div>
<script>
;(function() {
var myIndex = 0;
carousel();
function carousel() {
var i;
var x = document.getElementsByClassName("slide1");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
myIndex++;
if (myIndex > x.length) {myIndex = 1}
x[myIndex-1].style.display = "block";
setTimeout(carousel, 2000); // Change image every 2 seconds
}
})()
;(function() {
var myIndex = 0;
carousel();
function carousel() {
var i;
var x = document.getElementsByClassName("slide2");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
myIndex++;
if (myIndex > x.length) {myIndex = 1}
x[myIndex-1].style.display = "block";
setTimeout(carousel, 2000); // Change image every 2 seconds
}
})()
;(function() {
var myIndex = 0;
carousel();
function carousel() {
var i;
var x = document.getElementsByClassName("slide3");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
myIndex++;
if (myIndex > x.length) {myIndex = 1}
x[myIndex-1].style.display = "block";
setTimeout(carousel, 2000); // Change image every 2 seconds
}
})()
</script>
推荐阅读
- r - 我想要一个并排的 barplor (R)
- javascript - Flickity 并不总是加载(Shopify)
- javascript - Webpack 没有获取我的 JS 文件中的最新更改
- python - python 正则表达式解析路由输出
- colors - plotly小提琴图的离散颜色序列
- c# - 为 Linux 容器上托管的 kestrel Web 服务器设置应用程序池标识
- apache-spark - AWS Glue - 在 json 文件中具有不同架构的 DynamicFrame
- flutter - Flutter:查看whatsapp上发送的消息?
- javascript - VueFire - 在渲染之前操作 Firestore 数据
- plotly - 绘制直方图标签