Javascript 为什么这个";切换";代码只按顺序工作?
想象一下,在一列中有一页图像。此“图像缩放”效果切换开关仅按正向顺序工作。由于某些原因,我无法向后切换任何图像元素 示例:Javascript 为什么这个";切换";代码只按顺序工作?,javascript,Javascript,想象一下,在一列中有一页图像。此“图像缩放”效果切换开关仅按正向顺序工作。由于某些原因,我无法向后切换任何图像元素 示例: 单击图像1,然后单击图像2(代码将缩放图像1,然后缩放图像2,关闭图像1) 单击图像2,然后单击图像1(代码将缩放图像2,然后单击“无”) //安装图像缩放效果 window.onload=函数(){ AddEventToFigureMg() }; 函数addEventToFigureImg(){ var htmlFigures=document.getElementsBy
//安装图像缩放效果
window.onload=函数(){
AddEventToFigureMg()
};
函数addEventToFigureImg(){
var htmlFigures=document.getElementsByTagName(“图”);
for(var i=0;i=2){
effectCount[0]。classList.remove(“效果缩放”);
};
//如果没有缩放效果,请关闭
if(effectCount.length我在进一步分解逻辑后找到了答案。谢谢你的提示
function addEventToFigureImg() {
var htmlFigures = document.getElementsByTagName("figure");
for (var i = 0; i < htmlFigures.length; i++) {
htmlFigures[i].addEventListener("click", function() {
// toggle zoom and add darkroom effect
this.classList.toggle("effect-zoom");
document.documentElement.classList.add("not-a-modal-background");
// center this
this.scrollIntoView({
behavior: "smooth",
block: "center"
});
// count zoom effect
var effectCount = document.getElementsByClassName("effect-zoom");
// if there are no zoom effects
if (effectCount.length <= 0) {
// remove darkroom
document.documentElement.classList.remove("not-a-modal-background");
}
// if there are more effects
else if (effectCount.length >= 1) {
// find all effects
for (var i = 0; i < htmlFigures.length; i++) {
// zoom out others
htmlFigures[i].classList.remove("effect-zoom");
}
this.classList.toggle("effect-zoom");
};
}, false);
}
}
函数addEventToFigureImg(){
var htmlFigures=document.getElementsByTagName(“图”);
for(var i=0;i
“如果有多个元素,则缩小其他元素”-您仅从effectCount
中的第一个元素中删除类。当您单击“image 1”时,effectCount[0]
将显示为“image 1”。是否有更好的方法来识别页面上的“其他”元素?我正在尝试一个for循环,但感觉效率很低。
function addEventToFigureImg() {
var htmlFigures = document.getElementsByTagName("figure");
for (var i = 0; i < htmlFigures.length; i++) {
htmlFigures[i].addEventListener("click", function() {
// toggle zoom and add darkroom effect
this.classList.toggle("effect-zoom");
document.documentElement.classList.add("not-a-modal-background");
// center this
this.scrollIntoView({
behavior: "smooth",
block: "center"
});
// count zoom effect
var effectCount = document.getElementsByClassName("effect-zoom");
// if there are no zoom effects
if (effectCount.length <= 0) {
// remove darkroom
document.documentElement.classList.remove("not-a-modal-background");
}
// if there are more effects
else if (effectCount.length >= 1) {
// find all effects
for (var i = 0; i < htmlFigures.length; i++) {
// zoom out others
htmlFigures[i].classList.remove("effect-zoom");
}
this.classList.toggle("effect-zoom");
};
}, false);
}
}