事件处理程序在循环中无法正常工作

时间:2016-07-17 21:29:56

标签: javascript css

我试图通过foor循环将一些类应用于html元素。问题是循环变量无法正常工作。

Stream
'use strict'

  window.onload = function(){
    var elements = document.getElementsByTagName("div")

    for(var i = 0; i < elements.length; i++){
      elements[i].addEventListener("click", a(this, i), false)
    }

    function a(e, x){
      if(!e.className){
        e.className = "class".concat(x)
      }
      else {
        e.classList.remove(e.className)
      }
    }
  }

1 个答案:

答案 0 :(得分:0)

@Patrick建议这样做:

  window.onload = function(){
    var elements = document.getElementsByTagName("div")

    for(var i = 0; i < elements.length; i++){
      elements[i].addEventListener("click", a.bind(window, elements[i],i), false)
    }

    function a(e, x){
      if(!e.className){
        e.className = "class".concat(x)
      }
      else {
        e.classList.remove(e.className)
      }
    }
  }

您正在调用函数a并将其结果指定为事件处理程序。

使用bind,您可以创建一个函数,该函数将调用a作为参数传递元素和索引。