尝试在浏览器中运行此类代码时:
var k = function(e) {
return e.clientX;
};
var abc = function() {
alert(k());
};
document.querySelector("body").addEventListener("click", abc);
显示错误:
Uncaught TypeError: Cannot read property 'clientX' of undefined
这样,当我显示事件的结果而不将其转移到另一个函数时,一切正常
var k = function(e) {
alert(e.clientX);
};
document.querySelector("body").addEventListener("click", k);
我在做什么错了?
答案 0 :(得分:1)
k
希望该事件作为参数。您需要将该参数添加到abc
函数中,然后在调用k
时将其传递。
var k = function(e) {
return e.clientX;
};
var abc = function(event) {
alert(k(event));
};
document.querySelector("body").addEventListener("click", abc);
Click on the text here.
答案 1 :(得分:1)
执行时
document.querySelector("body").addEventListener("click", abc);
在abc()函数中,您将事件作为参数,因此您可以像下面这样声明abc函数,
var abc = function(event) {
alert(k());
};
要获得所需的结果,您需要将事件传递给函数k(),如下所示
var abc = function(event) {
alert(k(event));
};