javascript - 水平滑块错误 - 多个具有相同类的水平滑块与本机 JavaScript ,所有滑块一起工作我如何解决它
问题描述
#horizontal 滑块错误 - 多个具有相同类的水平滑块与本机 JavaScript,所有滑块协同工作我如何解决它### This First Horizontal Slider ## '''
/* 声明变量 */
let moveRight = document.querySelectorAll('.move-right');
let moveLeft = document.querySelectorAll('.move-left');
let left = document.querySelector('.move-left');
let right = document.querySelector('.move-right');
const slides = document.querySelectorAll('.slide');
let x = 0;
/* Function to slide Sliders Divs To left when click on arrow with class = ".move-
left"*/
for(let i = 0; i < moveLeft.length; i++){
moveLeft.forEach(function(left){
left.addEventListener('click', function(){
x++;
for (let i = 0; i < slides.length; i++){
if(x==0) {slides[i].style.left = "0px";}
if(x==1) {slides[i].style.left = "-320px";}
if(x==2) {slides[i].style.left = "-640px";}
if(x==3) {slides[i].style.left = "-960px";}
if(x==4) {slides[i].style.left = "-1280px";}
if(x==5) {slides[i].style.left = "-1600px";}
if(x>5) {x=5;}
}
})});
}
/* Function to slide Sliders Divs To Right when click on arrow with class = ".move-
right"*/
for(let i = 0; i < moveRight.length; i++){
moveRight.forEach(function(right){
right.addEventListener('click', function(){
x--;
for (let i = 0; i < slides.length; i++){
if(x==0) {slides[i].style.left = "0px";}
if(x==1) {slides[i].style.left = "-320px";}
if(x==2) {slides[i].style.left = "-640px";}
if(x==3) {slides[i].style.left = "-960px";}
if(x==4) {slides[i].style.left = "-1280px";}
if(x < 0) {x=0;}
}
})});
}
'''
解决方案
您尚未添加 HTML 代码,但我假设您有一个 section 或 div 标签,其中有您的幻灯片和左/右按钮。您可以稍微修改您的代码,以便仅在容器中定位幻灯片。这样,即使您有多个滑块,也只有您单击其按钮的那个滑块才能工作。
left.addEventListener('click', function(event){
// Assuming the parent div has a class of container
const container = event.target.closest('.container');
// Selecting only those slides that are a part of the container where the button has been clicked
const slides = container.querySelectorAll('.slides');
// Rest of your logic goes here
});
HTML将是这样的
<div class='container'>
<div class='slide'>Content here</div>
<button class='move-left'>Left</button>
<button class='move-right'>Right</button>
</div>
注意:closest()在 IE 中不起作用,如果您希望支持 IE,可能需要为其添加 polyfill。
推荐阅读
- tsql - 如何从 TSQLT 转换为 HL7 (V2) 格式
- database - MongoDB:索引属性上的 $lookup 与非索引属性上的 $in
- python - 如何在 Python 上使用 Tweepy 创建 Twitter 线程
- python - Python正则表达式替换字符串和句点之间的所有内容,后跟括号
- javascript - 在 javascript 中合并 JsonConvert 的 null
- r - 由于 .key 已被弃用,如何重命名 nest() 中的数据列?
- sql - SQL CASE 语句 - 返回第一个匹配项(忽略其他匹配项)
- sql - 具有多个嵌套 Else 的 case 语句
- python - 读取行/字符串的某些部分
- jmeter - 是否有原因我无法启动 HTTP(S) 测试脚本记录器