我试图通过返回time_pressed
并在函数外部执行function held()
来访问time_pressed
之外的console.log(held())
变量。它是console.log
- undefined
。为什么它不起作用?如何在函数外部访问所述变量?我需要做什么?
以下是我的代码..
function held(){
var time_pressed;
document.onmousedown = function(e){
mousedown_time = getTime();
console.log(mousedown_time);
}
document.onmouseup = function(e){
time_pressed = getTime() - mousedown_time;
console.log('You held your mouse down for', time_pressed,'miliseconds.');
}
return time_pressed
}
console.log(held())
答案 0 :(得分:2)
考虑以下功能:
function held(){
var time_pressed;
return time_pressed;
}
console.log(held());
您希望函数返回什么?没有定义任何值,因此值为undefined
。
您在该函数中唯一要做的事情是将事件处理函数分配给文档。这意味着两件事:
您已成功创建这些事件处理程序。所以不清楚为什么你试图记录一些返回值。您正在执行的功能不返回任何内容,也不需要返回。没有什么可以记录的。当他们执行时,事件处理程序将登录到控制台。
答案 1 :(得分:1)
因此,held()
只是在代码中设置处理程序。在处理程序触发填充之前,您的time_pressed
变量不会保留任何内容。试一试:
function held(){
var time_pressed;
var mousedown_time;
document.onmousedown = function(e){
mousedown_time = getTime();
console.log(mousedown_time);
}
document.onmouseup = function(e){
time_pressed = getTime() - mousedown_time;
console.log('You held your mouse down for', time_pressed,'miliseconds.');
}
}
held();
编辑:为了完整起见,需要定义getTime()
。我跟着去了:
function getTime(){ return new Date().getTime(); }