При попытке запустить такой код в браузере:
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);
Что я делаю неправильно ?
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.
Когда вы выполняете
document.querySelector("body").addEventListener("click", abc);
в функции abc () вы получите событие как параметр, поэтому вы можете объявить функцию abc, как показано ниже,
var abc = function(event) {
alert(k());
};
чтобы получить желаемый результат, вам нужно передать событие функции k (), как показано ниже
var abc = function(event) {
alert(k(event));
};
У вас нет
pageY
в коде вашего вопроса. Кроме того, еслиk
принимает аргумент, от которого он зависит, вы должны передать ему аргумент.