Javascript 使用onclick函数将类添加到div

Javascript 使用onclick函数将类添加到div,javascript,Javascript,我试图找到一些方法来解决我的问题,那就是在单击divs时将类添加到div中,但我无法使其工作 var el = document.getElementsByClassName('applications'); var i; for (i = 0; i < el.length; i++) { el[i].addEventListener("click", function() { if (el[i]) { el[i].className += el[i].classN

我试图找到一些方法来解决我的问题,那就是在单击
div
s时将类添加到div中,但我无法使其工作

var el = document.getElementsByClassName('applications');
var i;
for (i = 0; i < el.length; i++) {
  el[i].addEventListener("click", function() {
    if (el[i]) {
      el[i].className += el[i].className ? ' openDiv' : 'openDiv';
    }
  });
}
var el=document.getElementsByClassName('applications');
var i;
对于(i=0;i
我之所以使用“for循环”,是因为我使用了
getElementsByClassName
,它给出了一个节点列表。我还创建了一个代码笔示例:


不要使用复杂的字符串操作,而是使用:

我相信您可能需要为eventListeners添加一个闭包才能正常工作

因此,这将被视为一种解决方案:

var el = document.getElementsByClassName('applications');
var i;
for (i = 0; i < el.length; i++) {
  (function (i) {
    el[i].addEventListener("click", function() {
      if (el[i]) {
        el[i].classList.add('openDiv');
      }
    });
  })(i);
}
var el=document.getElementsByClassName('applications');
var i;
对于(i=0;i
不要使用复杂的字符串操作,请使用:

我相信您可能需要为eventListeners添加一个闭包才能正常工作

因此,这将被视为一种解决方案:

var el = document.getElementsByClassName('applications');
var i;
for (i = 0; i < el.length; i++) {
  (function (i) {
    el[i].addEventListener("click", function() {
      if (el[i]) {
        el[i].classList.add('openDiv');
      }
    });
  })(i);
}
var el=document.getElementsByClassName('applications');
var i;
对于(i=0;i
看起来您可能会遇到闭包问题,如果您在方法中警告
i
的值,您可能会发现它总是
el.length
或undefined在
addEventListener
中,
el[i]
未定义(单击时)。确实是闭包。看起来您可能会遇到闭包问题,如果您在方法中警告
i
的值,您可能会发现它总是
el.length
或undefined在
addEventListener
中,
el[i]
未定义(单击时)。确实是闭包。我认为它无论如何都不能解决问题。。。可能是改进现有代码的建议…@ArunPJohny我是。。。可以我的建议是正确的,因为这可能行不通。我还说过,使用闭包将起作用。但是没有提供代码。@PraveenKumar,我猜
if(el[I]){
在这里没有扮演任何角色,可能会增加混乱。@RayonDabre是的,有一件事是,看起来那个人实际上在检查该元素是否存在。好的事情只有对吗?@RayonDabre是的,看起来对……让我们看看OP是怎么回事。如果他们有问题,肯定会回来。所以他们肯定会检查Commonts.让我看看。谢谢你的见解!
:)
我认为它无论如何都不能解决问题…可能是建议改进现有代码…@ArunPJohny我是…好的..我是在建议正确的方法,因为那可能不起作用。我也说过使用闭包会起作用。但我没有提供代码。@PraveenKumar,我猜
if(el[i]){
在这里没有扮演任何角色,可能会增加混乱。@RayonDabre是的,有一件事是,看起来那个人实际上在检查该元素是否存在。好的事情只有对吗?@RayonDabre是的,看起来对……让我们看看OP是怎么回事。如果他们有问题,肯定会回来。所以他们肯定会检查Common让我看看。谢谢你的见解!
:)