gpt4 book ai didi

javascript - JS 中两个相同函数之间的间隙

转载 作者:行者123 更新时间:2023-12-03 07:39:36 27 4
gpt4 key购买 nike

我用 JavaScript 编写了两个相同的函数。正如您所看到的,对于我使用“this”方法的前两个框,我想创建类似无限函数的东西,它将颜色从默认值切换为每次单击时设置的颜色。该函数有效,但仅更改边框一次,而对于我的<div id="#"></div>标签它工作得很好(如果你点击甚至 100 次,它就会从默认颜色更改为“设置”颜色,这对我的前两个带有类的 div 不起作用)。这个差距是由什么造成的?

document.addEventListener("DOMContentLoaded", function() {

var elements = document.getElementsByClassName('bro');

for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener('click', function() {
for (var i = 0; i < elements.length; i++) {
if (this.style.border == '15px solid lime') {
this.style.border = '15px solid black';
} else {
this.style.border = '15px solid lime';
}
}
});
}

/*scripting the div*/

var first = document.getElementById('firstEL');

first.addEventListener('click', function() {
if (first.style.border == '10px solid mediumorchid') {
first.style.border = '10px outset red';
} else {
first.style.border = '10px solid mediumorchid';
}


});
});
    .bro {
width: 220px;
height: 200px;
border: 15px solid lime;
background-color: purple;
display: inline-block;
margin: 10px;
}
#firstEL {
width: 200px;
height: 200px;
border: 10px solid mediumorchid;
display: inline-block;
background-color: darkblue;
}
<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8" />
<title>Wilkomen</title>
<script src="https://code.jquery.com/jquery-1.12.0.js"></script>
<script src="js/main.js"></script>

<!-- css -->
<link rel="stylesheet" href="css/main.css">
</head>

<body>
<div class="bro"></div>
<div class="bro"></div>

<br>
<!----- id ---->

<div id="firstEL"></div>
</body>

</html>

最佳答案

问题出在点击事件监听器上:

elements[i].addEventListener('click',function() {
for (var i = 0 ; i < elements.length ; i++) {
if (this.style.border == '15px solid lime') {
this.style.border = '15px solid black';
} else {
this.style.border = '15px solid lime';
}
}
});

如果单击其中一个 div,则会迭代所有 div 并切换颜色。结果,您切换了两次颜色:黑色到石灰色,再到黑色。

我建议删除 for,或者 event 最好使用 event.target属性:

elements[i].addEventListener('click', function (e) {
if(e.target.style.border == '15px solid lime') {
e.target.style.border = '15px solid black';
} else {
e.target.style.border = '15px solid lime';
}
});

关于javascript - JS 中两个相同函数之间的间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463245/

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