addEventListener(' click')正在自行执行

时间:2017-09-08 10:40:07

标签: javascript html ecmascript-6

在我的javascript(ES6)中,我有一个带有事件处理程序的简单<a>标记,基本上在点击<a>标记时我希望页面重定向。

我的问题是,当我将URL参数传递给处理重定向的函数时,无论是否已点击addEventListener,测试函数都会执行,因此它基本上只是重定向回来页面加载本身就不是我想要的。

this.elem.addEventListener('click', this.test(this.elem.id), false);是否有任何理由独立执行?

的index.html:

<a id="about" class="a-tag" target='_blank'>About</a>

about.html:

<a id="index" class="a-tag" target='_blank'>Index</a>

Master.js:

import { Nav } from 'module/Nav';

(function() {

  Nav.init();

})();

Nav.js:

export const Nav = {

  elem: document.querySelector('.a-tag'),

  init() {
    this.render();
  },

  test(page) {
      window.location.href = "/" + page + ".html";
  },

  render() {
    if (this.elem) {
      this.elem.addEventListener('click', this.test(this.elem.id), false);
    }
  }

};

1 个答案:

答案 0 :(得分:3)

因为你没有传递函数的引用,而是函数的结果。你调用直接重定向的函数。替换为

this.elem.addEventListener('click', () => this.test(this.elem.id), false);