未捕获的TypeError:传输事件时无法读取未定义的属性“ clientX”

时间:2018-10-26 23:09:52

标签: javascript google-chrome

尝试在浏览器中运行此类代码时:

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);

我在做什么错了?

2 个答案:

答案 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));
};