在 JS 中的两个相同函数之间切换
Gapping between two of the same functions in JS
我在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.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';
}
});
相关文章:
- Jquery在函数之间传递表行
- d3中堆栈函数和嵌套函数之间的差异
- 如何在函数之间切换
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 在函数之间传递javascript变量
- 两个函数之间的角度承诺
- Javascript创建函数,以便在其他函数之间共享变量
- 直接绑定和使用每个函数之间的区别
- 节点模块对象范围:在所有函数之间共享一个对象
- js 函数之间使用参数的区别
- angularjs+ui.router:指令控制器和链接函数之间的不同行为
- 如何在onchange事件中的两个函数之间进行选择
- 在使用ajax调用的函数之间调用相同的函数
- 在JavaScript函数之间传递JSON值
- 试图理解JavaScript中原型和构造函数之间的区别
- 什么'新函数和函数之间的区别
- javascript函数之间的OR运算符
- 以下jquery和requireJS函数之间的区别
- 在Javascript中的函数之间共享变量