document.getElementById("hit").addEventListener("click",console.log('test'))
我有那行代码,点击是按钮的ID:<button id = "hit" value="Hit">Hit</button>
在控制台中刷新页面输出“测试”,我不知道为什么。
答案 0 :(得分:4)
将参数传递给函数时,将立即调用它。您需要传递一个将等待事件的函数,然后使用指定的参数调用console.log
。
document.getElementById("hit").addEventListener("click",() => console.log('test'))
答案 1 :(得分:2)
addEventListener("click",console.log('test'))
将立即运行console.log('test')
并传递返回值console.log
。返回值是不确定的,因此您的代码与此等效:
document.getElementById("hit").addEventListener("click", undefined);
console.log('test');
OR
const consoleReturnValue = console.log('test'); // will be undefined
document.getElementById("hit").addEventListener("click", consoleReturnValue );
我认为您要实现的目标是
addEventListener("click", () => console.log('this'));
或者,如果您不能使用ES6:
addEventListener("click", console.log.bind(window, 'this'));
在这种情况下,您实际上将function
作为第二个参数而不是undefined
原始变量。
事实,将undefined
作为参数传递与不传递它相同,因此您当前的addEventLinster
调用与以下内容相同:
document.getElementById("hit").addEventListener("click");
console.log('test');
答案 2 :(得分:0)
document.getElementById("hit").addEventListener("click", function (){
console.log('test');
});