【发布时间】:2017-09-30 20:13:45
【问题描述】:
我的代码确实有效,但我不想再出现 jshint 错误:
在循环中声明的函数引用外部作用域变量可能会导致语义混乱
我已经尝试使用 ES6 中的 let 来解决该错误,因为我认为这可以解决问题。我也将 gruntfile 配置为使用 ES6。
我尝试使用两个循环,带有变量“i”的外循环和带有变量“j”的内循环
都没有用。
此处提供完整代码:https://jsfiddle.net/rwschmitz/zz7ot3uu/
var hobbies = document.getElementsByClassName("hobbies");
var active = false;
// For mouse input
for (var i = 0; i < 5; i++) {
hobbies[i].onmouseover = function() {
hobbies[0].classList.add('hobbies-slide-left');
hobbies[1].classList.add('hobbies-slide-right');
hobbies[2].classList.add('hobbies-slide-left');
hobbies[3].classList.add('hobbies-slide-right');
hobbies[4].classList.add('hobbies-slide-left');
};
}
// For click input
for (var i = 0; i < 5; i++) {
hobbies[i].onclick = function() {
hobbies[0].classList.add('hobbies-slide-left');
hobbies[1].classList.add('hobbies-slide-right');
hobbies[2].classList.add('hobbies-slide-left');
hobbies[3].classList.add('hobbies-slide-right');
hobbies[4].classList.add('hobbies-slide-left');
};
}
【问题讨论】:
标签: javascript loops closures jshint