【问题标题】:Use a for loop to add a variable to an instance name with javascript/canvas使用 for 循环通过 javascript/canvas 将变量添加到实例名称
【发布时间】:2018-08-16 03:22:20
【问题描述】:

我可以在 addEventListener 上使用带有实例的 for 循环吗?例如,我使用名为“highlightbtn_1”到“highlightbtn_5”的按钮可以正常工作:

this.highlightbtn_1.addEventListener("click", onClick.bind(this));
this.highlightbtn_2.addEventListener("click", onClick.bind(this));
this.highlightbtn_3.addEventListener("click", onClick.bind(this));
this.highlightbtn_4.addEventListener("click", onClick.bind(this));
this.highlightbtn_5.addEventListener("click", onClick.bind(this));

是否可以在按钮实例中使用 for 循环来循环它们,而不是为每个按钮添加单独的 EventListener?类似这样:

    var i;
    for (i = 1; i < 6; i++) {
      this.highlightbtn_[+i].addEventListener("click", onClick.bind(this));
      //Some onClick function
    }

我确实找到了similar topic answered here,但我无法使用它。在此先感谢您的任何意见!

【问题讨论】:

  • 为什么highlightbtns 不是一个数组?这将使一切变得更加简单。
  • 谢谢@Bergi - 我不知道从哪里开始,但我很感激这个答案,可以从这里进一步研究。

标签: javascript variables for-loop instance addeventlistener


【解决方案1】:

可以通过两种方式访问​​对象属性:

  • obj.propertyName
  • obj['propertyName']

第二种使用表达式的方式。

所以,你可以使用this['highlightbtn_'+i]

或者将它们重构为一个数组。

或者给它们添加一些 CSS 类并添加通用事件监听器。

【讨论】:

  • 谢谢@vp_arth 'this['highlightbtn_'+i]' 是我一直在寻找的,而且效果很好。我也很想尝试一个数组,但现在这解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2015-08-23
  • 2021-01-15
  • 1970-01-01
  • 2021-11-11
  • 2013-09-11
  • 2014-06-15
  • 2021-07-01
  • 1970-01-01
相关资源
最近更新 更多