已有2个轮播滑块,用JavaScript新增第三个失效,求参数配置方案
嘿,别着急!作为新手能尝试自己加轮播已经很棒啦😉 咱们一步步来解决这个问题——你的现有代码是通过**轮播编号(no参数)**来区分不同滑块组的,新增第三个轮播只需要对应扩展几个地方就行:
步骤1:添加第三个轮播的HTML结构
按照前两个轮播的格式,新增第三个轮播容器,注意这几个关键点:
- onclick事件里的第二个参数是
2(因为前两个轮播用的是0和1,索引从0开始计数) - 轮播项的类名统一用
mySlides3,和前两个的mySlides1、mySlides2对应 - 替换成你自己的图片路径、页码数量和文本内容
示例代码如下:
<!-- 第三个轮播 --> <div class="slideshow-container" onclick="plusSlides(1, 2)"> <div class="mySlides3"> <div class="numbertext">1/[你的图片总数]</div> <img src="IMG/你的第三个轮播图片路径.jpg" style="width:100%"> <div class="text-自定义类名">你的轮播文本</div> </div> <!-- 记得添加这个轮播的其他图片项,类名都要写mySlides3 --> <div class="mySlides3"> <div class="numbertext">2/[你的图片总数]</div> <img src="IMG/另一张图片.jpg" style="width:100%"> <div class="text-自定义类名">另一项文本</div> </div> </div>
步骤2:修改JavaScript代码
原来的JS用两个数组管理多个轮播的状态,现在需要扩展这两个数组,并初始化第三个轮播:
slideIndex:存储每个轮播的当前页码,新增第三个元素1(初始显示第1张)slideId:存储每个轮播对应的类名,新增"mySlides3"- 最后调用
showSlides(1, 2)完成第三个轮播的初始化
修改后的完整JS代码:
var slideIndex = [1, 1, 1]; var slideId = ["mySlides1", "mySlides2", "mySlides3"]; showSlides(1, 0); showSlides(1, 1); showSlides(1, 2); // 新增:初始化第三个轮播 function plusSlides(n, no) { showSlides(slideIndex[no] += n, no); } function showSlides(n, no) { var i; var x = document.getElementsByClassName(slideId[no]); if (n > x.length) {slideIndex[no] = 1} if (n < 1) {slideIndex[no] = x.length} for (i = 0; i < x.length; i++) { x[i].style.display = "none"; } x[slideIndex[no]-1].style.display = "block"; }
给你解释一下参数的意思
你之前疑惑的(1,0)、(1,1)这类参数:
- 第一个数字
1:表示点击后切换1步(如果是-1就是切换到上一张,需要跳多步可以改这个数值) - 第二个数字
0/1/2:是轮播的编号索引,对应slideIndex和slideId数组的位置,用来告诉JS你操作的是哪一个轮播组
最后要注意的小细节
- 确保第三个轮播的所有图片项都用
mySlides3类名,不然JS找不到这些元素 - 检查CSS里的
.slideshow-container、.mySlides3(以及相关的文本、页码样式)是否和前两个轮播一致,不然可能出现显示异常 - 如果需要添加“上一张”按钮,只要把
plusSlides(-1, 2)作为点击事件就行,逻辑和前两个轮播完全一致
内容的提问来源于stack exchange,提问作者Margaret
相关产品推荐
相关产品推荐

