在我的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);
}
}
};
答案 0 :(得分:3)
因为你没有传递函数的引用,而是函数的结果。你调用直接重定向的函数。替换为
this.elem.addEventListener('click', () => this.test(this.elem.id), false);