将Event Listener添加到元素数组中

时间:2018-01-29 10:46:58

标签: javascript jquery addeventlistener

if (btns.length && sections.length > 0) {

  btns[0].addEventListener('click', function (event) {
    smoothScrollTo(sections[0], event);
  });
  btns[1].addEventListener('click', function (event) {
    smoothScrollTo(sections[1], event);
  });
  btns[2].addEventListener('click', function (event) {
    smoothScrollTo(sections[2], event);
  });
  btns[3].addEventListener('click', function (event) {
    smoothScrollTo(sections[3], event);
  });
}

你好朋友可以说我有更多按钮!而不是编码它们中的每一个如何简而言之!我是js的新人......

由于

2 个答案:

答案 0 :(得分:1)

我在那边看到一个jQuery TAG,不是吗?

$(btns).click(function(event) {
    smoothScrollTo(sections[$(this).index()], event);
});

如果将索引作为属性或ID添加到按钮中会更好,以防止出现任何问题......

答案 1 :(得分:-2)

您需要创建一个匿名函数来传递i变量。

if (btns.length && sections.length > 0) {
  var l = btns.length;
  for (var i = 0; i < l; i++) {
    btns[i].addEventListener('click', function(event) {
      (function(_i) {
        smoothScrollTo(sections[_i], event);
      })(i);
    });
  }
}