gpt4 book ai didi

javascript - 突出显示和取消突出显示图像 - 单击问题

转载 作者:行者123 更新时间:2023-12-02 15:55:28 25 4
gpt4 key购买 nike

我已经将其作为多选工作,在第一次单击时突出显示每个图像,然后在第二次单击时取消突出显示。但是,有时需要单击图像两次才能更改,有时只需单击一次。我不明白为什么!

这是我的代码:

var ImageSelector = function() {
var imgs = null;
//var selImg = null;
var clicked = false;
var unClicked = true;

return {
addImages: function(container) {
imgs = container.getElementsByTagName("img");


for(var i = 0, len = imgs.length; i < len; i++) {
var img = imgs[i];

// img.className = "normal";


img.onclick = function() {


if(unClicked == true) {
this.className = "highlighted";
clicked = true;
unClicked = false;
}

else if(clicked == true) {
this.className = "normal";
clicked = false;
unClicked = true;
}



};
}
}
};
}();


var div = document.getElementById("Images");
ImageSelector.addImages(div);

最佳答案

clicked/unClicked 变量在这里是不必要的,因为您本质上要做的是在每个图像上切换一个类。

您的代码可以大幅减少为:

var ImageSelector = function() {    
return {
addImages: function(container) {
container.onclick = function(e) {
var target = e.target;
if(target.nodeName === "IMG") {
target.className = (target.className === "highlighted") ? "normal" : "highlighted";
}
};
}
};
}();

var div = document.getElementById("Images");
ImageSelector.addImages(div);
img {
width: 100px;
height: 100px;
border: 1px black solid;
}

.highlighted {
background-color: red;
}

.normal {

}
<div id="Images">
<img />
<img />
</div>

另外,作为旁注,如果您在条件语句中检查变量之前知道变量是 bool 值,则应该使用 === 或简单地 if(myVar)if (!myVar) 分别用于检查 true 和 false 条件。

我希望这会有所帮助。

关于javascript - 突出显示和取消突出显示图像 - 单击问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31583844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com