Javascript 为什么';我的函数是否在第二次单击时加载新类名?
我有一个附加了我的函数的模态:Javascript 为什么';我的函数是否在第二次单击时加载新类名?,javascript,Javascript,我有一个附加了我的函数的模态: <img onclick="modalZoom()" class="zoomed-out" id="modal-img"> 我还尝试添加一个else if语句,而不是只添加else,但我的问题是,当我第一次单击它时,它读取类,并且由于它是缩小的,它会删除该语句并添加放大的。但是由于某种原因,当我第二次点击它时,console.log(imgClass)仍然返回缩小的,并且我的代码的最后一半没有运行,即使我可以在我的检查器中看到类被缩小了。var im
<img onclick="modalZoom()" class="zoomed-out" id="modal-img">
我还尝试添加一个
else if
语句,而不是只添加else
,但我的问题是,当我第一次单击它时,它读取类,并且由于它是缩小的
,它会删除该语句并添加放大的
。但是由于某种原因,当我第二次点击它时,console.log(imgClass)
仍然返回缩小的,并且我的代码的最后一半没有运行,即使我可以在我的检查器中看到类被缩小了。var imgClass
是否仅在函数第一次运行时运行?如果是,我该如何绕过它?我尝试删除变量并直接在if
语句中获取类,但仍然存在相同的问题。因此我将代码更改为if(imgClass.match(“缩放”)
。老实说,我不知道区别是什么,但它起了作用。imgClass=“zoomed”
classList
返回列表数组,而不是单个类。我还尝试了className
,同样的问题。这是因为类可以有多个值,如class=“a b c”
。因此,当您匹配时,它起作用了。但是元素只有一个类:缩小了。在它变为“放大”
后,它不再等于“缩小”
,所以按照我的理解,它应该执行代码的第二部分。
function modalZoom() {
var imgClass = document.getElementById("modal-img").classList;
var pedImg = document.getElementById("modal-img");
if (imgClass = "zoomed-out") {
pedImg.classList.remove("zoomed-out");
pedImg.classList.add("zoomed-in");
} else {
pedImg.classList.remove("zoomed-in");
pedImg.classList.add("zoomed-out");
}
console.log(imgClass);
}