Javascript 获取数组中下一项的事件侦听器
创建一个脚本来循环遍历数组中的项目,理想情况下是下一个和上一个项目。但是,当前脚本可以工作,它总是从零索引开始,无论当前在正在创建的“模拟模式”中显示哪个项目。全文如下:Javascript 获取数组中下一项的事件侦听器,javascript,arrays,Javascript,Arrays,创建一个脚本来循环遍历数组中的项目,理想情况下是下一个和上一个项目。但是,当前脚本可以工作,它总是从零索引开始,无论当前在正在创建的“模拟模式”中显示哪个项目。全文如下: var dogs = document.querySelectorAll(".dog-div"); var dogArr = Array.prototype.slice.call(dogs); var modal = document.querySelector(".modal"); var modalTitle = doc
var dogs = document.querySelectorAll(".dog-div");
var dogArr = Array.prototype.slice.call(dogs);
var modal = document.querySelector(".modal");
var modalTitle = document.querySelector(".modal-title");
var modalImg = document.querySelector(".modal-img");
var leftArrow = document.getElementById("left-arrow");
var rightArrow = document.getElementById("right-arrow");
for (i = 0; i < dogArr.length; i++) {
dogArr[i].addEventListener("click", function(e){
e.preventDefault();
modal.style.display = "block";
modalTitle.textContent = this.dataset.dogName;
modalImg.setAttribute("src", this.dataset.dogImage );
})
}
function nextDog() {
i = i + 1;
i = i % dogArr.length;
return dogArr[i];
}
rightArrow.addEventListener("click", function(e) {
e.preventDefault();
console.log(nextDog());
})
var dogs=document.queryselectoral(“.dog div”);
var dogArr=Array.prototype.slice.call(dogs);
var modal=document.querySelector(“.modal”);
var modaltle=document.querySelector(“.modal title”);
var modalImg=document.querySelector(“.modal img”);
var leftArrow=document.getElementById(“左箭头”);
var rightArrow=document.getElementById(“右箭头”);
对于(i=0;i
感谢您的指导。试试以下方法:
var dogs = document.querySelectorAll(".dog-div");
var dogArr = Array.prototype.slice.call(dogs);
var modal = document.querySelector(".modal");
var modalTitle = document.querySelector(".modal-title");
var modalImg = document.querySelector(".modal-img");
var leftArrow = document.getElementById("left-arrow");
var rightArrow = document.getElementById("right-arrow");
function makeIterable(arr) {
var cur = 0;
arr.next = function () {
return ++cur >= this.length ? false : this[cur];
};
arr.prev = function () {
return --cur < 0 ? false : this[cur];
};
arr.cur = function () {
return cur;
};
arr.setCur = function (pos) {
cur = pos;
};
return arr;
};
makeIterable(dogArr);
function clickedClassHandler(name,callback) {
var allElements = document.body.getElementsByTagName("*");
for(var x = 0, len = allElements.length; x < len; x++) {
if(allElements[x].className == name) {
allElements[x].onclick = handleClick;
}
}
function handleClick() {
var elmParent = this.parentNode;
var parentChilds = elmParent.childNodes;
var index = 0;
for(var x = 0; x < parentChilds.length; x++) {
if(parentChilds[x] == this) {
break;
}
if(parentChilds[x].className == name) {
index++;
}
}
callback.call(this,index);
}
}
clickedClassHandler("dog-div",function(index){
dogArr.setCur(index); //here's where you set the current position of the array based on whichever item is selected.
modal.style.display = "block";
modalTitle.textContent = dogArr[dogArr.cur()].dataset.dogName;
modalImg.setAttribute("src", dogArr[dogArr.cur()].dataset.dogImage );
});
rightArrow.addEventListener("click", function(e) {
e.preventDefault();
if (dogArr.cur() < dogArr.length-1) {
console.log(dogArr.next());
modalTitle.textContent = dogArr[dogArr.cur()].dataset.dogName;
modalImg.setAttribute("src", dogArr[dogArr.cur()].dataset.dogImage );
}
})
leftArrow.addEventListener("click", function(e) {
e.preventDefault();
if (dogArr.cur() != 0) {
console.log(dogArr.prev());
modalTitle.textContent = dogArr[dogArr.cur()].dataset.dogName;
modalImg.setAttribute("src", dogArr[dogArr.cur()].dataset.dogImage );
}
})
var dogs=document.queryselectoral(“.dog div”);
var dogArr=Array.prototype.slice.call(dogs);
var modal=document.querySelector(“.modal”);
var modaltle=document.querySelector(“.modal title”);
var modalImg=document.querySelector(“.modal img”);
var leftArrow=document.getElementById(“左箭头”);
var rightArrow=document.getElementById(“右箭头”);
函数makeIterable(arr){
var-cur=0;
arr.next=函数(){
return++cur>=this.length?false:this[cur];
};
arr.prev=函数(){
return--cur<0?false:此[cur];
};
arr.cur=函数(){
返回电流;
};
arr.setCur=功能(位置){
cur=pos;
};
返回arr;
};
可制作(dogArr);
函数clickedClassHandler(名称,回调){
var-allegements=document.body.getElementsByTagName(“*”);
对于(var x=0,len=allegements.length;x
每次单击按钮时,您都需要记住所单击项目的位置。尝试以下操作:
var dogs = document.querySelectorAll(".dog-div");
var dogArr = Array.prototype.slice.call(dogs);
var modal = document.querySelector(".modal");
var modalTitle = document.querySelector(".modal-title");
var modalImg = document.querySelector(".modal-img");
var leftArrow = document.getElementById("left-arrow");
var rightArrow = document.getElementById("right-arrow");
function makeIterable(arr) {
var cur = 0;
arr.next = function () {
return ++cur >= this.length ? false : this[cur];
};
arr.prev = function () {
return --cur < 0 ? false : this[cur];
};
arr.cur = function () {
return cur;
};
arr.setCur = function (pos) {
cur = pos;
};
return arr;
};
makeIterable(dogArr);
function clickedClassHandler(name,callback) {
var allElements = document.body.getElementsByTagName("*");
for(var x = 0, len = allElements.length; x < len; x++) {
if(allElements[x].className == name) {
allElements[x].onclick = handleClick;
}
}
function handleClick() {
var elmParent = this.parentNode;
var parentChilds = elmParent.childNodes;
var index = 0;
for(var x = 0; x < parentChilds.length; x++) {
if(parentChilds[x] == this) {
break;
}
if(parentChilds[x].className == name) {
index++;
}
}
callback.call(this,index);
}
}
clickedClassHandler("dog-div",function(index){
dogArr.setCur(index); //here's where you set the current position of the array based on whichever item is selected.
modal.style.display = "block";
modalTitle.textContent = dogArr[dogArr.cur()].dataset.dogName;
modalImg.setAttribute("src", dogArr[dogArr.cur()].dataset.dogImage );
});
rightArrow.addEventListener("click", function(e) {
e.preventDefault();
if (dogArr.cur() < dogArr.length-1) {
console.log(dogArr.next());
modalTitle.textContent = dogArr[dogArr.cur()].dataset.dogName;
modalImg.setAttribute("src", dogArr[dogArr.cur()].dataset.dogImage );
}
})
leftArrow.addEventListener("click", function(e) {
e.preventDefault();
if (dogArr.cur() != 0) {
console.log(dogArr.prev());
modalTitle.textContent = dogArr[dogArr.cur()].dataset.dogName;
modalImg.setAttribute("src", dogArr[dogArr.cur()].dataset.dogImage );
}
})
var dogs=document.queryselectoral(“.dog div”);
var dogArr=Array.prototype.slice.call(dogs);
var modal=document.querySelector(“.modal”);
var modaltle=document.querySelector(“.modal title”);
var modalImg=document.querySelector(“.modal img”);
var leftArrow=document.getElementById(“左箭头”);
var rightArrow=document.getElementById(“右箭头”);
函数makeIterable(arr){
var-cur=0;
arr.next=函数(){
return++cur>=this.length?false:this[cur];
};
arr.prev=函数(){
return--cur<0?false:此[cur];
};
arr.cur=函数(){
返回电流;
};
arr.setCur=功能(位置){
cur=pos;
};
返回arr;
};
可制作(dogArr);
函数clickedClassHandler(名称,回调){
var-allegements=document.body.getElementsByTagName(“*”);
对于(var x=0,len=allegements.length;x
你需要记住t的位置
var dogs = document.querySelectorAll(".dog-div");
var dogArr = Array.prototype.slice.call(dogs);
//global tracker
var currIndex=dogArr.length;
var modal = document.querySelector(".modal");
var modalTitle = document.querySelector(".modal-title");
var modalImg = document.querySelector(".modal-img");
var leftArrow = document.getElementById("left-arrow");
var rightArrow = document.getElementById("right-arrow");
for (i = 0; i < dogArr.length; i++) {
dogArr[i].addEventListener("click", function(e){
e.preventDefault();
modal.style.display = "block";
modalTitle.textContent = this.dataset.dogName;
modalImg.setAttribute("src", this.dataset.dogImage );
//get item index from dataset
currIndex=this.dataset.indexNumber;
});
//set item index here
dogArr[i].dataset.indexNumber=i;
}
function nextDog() {
currIndex = currIndex + 1;
currIndex = currIndex % dogArr.length;
return dogArr[currIndex];
}
rightArrow.addEventListener("click", function(e) {
e.preventDefault();
console.log(nextDog());
})
var dogs = document.querySelectorAll(".dog-div");
var dogArr = Array.prototype.slice.call(dogs);
var modal = document.querySelector(".modal");
var modalTitle = document.querySelector(".modal-title");
var modalImg = document.querySelector(".modal-img");
var leftArrow = document.getElementById("left-arrow");
var rightArrow = document.getElementById("right-arrow");
var current = dogArr.length;
for (i = 0; i < dogArr.length; i++) {
dogArr[i].addEventListener("click", function(){
modal.style.display = "block";
current = dogArr.indexOf(this);
modalContent(this);
this.classList.add("active");
})
}
function modalContent(modal){
console.log(modal);
var dogName = modal.dataset.dogName;
console.log(dogName);
var dogImg = modal.dataset.dogImage;
console.log(dogImg);
modalTitle.textContent = dogName;
modalImg.setAttribute("src", dogImg );
}
function nextDog() {
current = current + 1;
current = current % dogArr.length;
return modalContent(dogArr[current]);
}
function prevDog() {
current = current - 1;
current = current % dogArr.length;
return modalContent(dogArr[current]);
}
rightArrow.addEventListener("click", function() {
nextDog();
})
leftArrow.addEventListener("click", function() {
prevDog();
})