当用户点击链接时,我使用javascript来捕获x
和y
位置,到目前为止,我可以使其有效,但我希望它将这两个值返回到{{1当它被调用时。我该怎么办?
function init()
答案 0 :(得分:5)
如果您有评论,您将永远无法访问变量,事件尚未发生。
相反,你可以做的是将一个匿名函数传递给事件处理程序,调用你的方法返回一个值并在适当的时候使用它
function init()
{
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", function(event){
var result = getPosition(event);
// result is your return value
}, false);
}
答案 1 :(得分:4)
你不能。
JavaScript不具备时间旅行的能力。
事件处理函数不会运行直到事件发生。到那时,调用addEventHandler
的函数将完成运行并返回。
事件处理函数需要处理数据本身,或者调用其他函数来完成它。数据必须向前传播,它无法返回。
答案 2 :(得分:0)
另一种方法在这里...
在脚本代码之上初始化一个变量
<script type="text/javascript">
var paramVal1= null;
var paramVal2 = null;
document.addEventListener("DOMContentLoaded", init, false);
function init()
{
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", getPosition, false);
return {x: paramVal1, y: paramVar2};
}
function getPosition(event)
{
var x = new Number();
var y = new Number();
var canvas = document.getElementById("canvas");
if (event.x != undefined && event.y != undefined)
{
x = event.x;
y = event.y;
}
else
{
x = event.clientX + document.body.scrollLeft +
document.documentElement.scrollLeft;
y = event.clientY + document.body.scrollTop +
document.documentElement.scrollTop;
}
x -= canvas.offsetLeft;
y -= canvas.offsetTop;
paramVal1 = x;
paramVal2 = y;
alert("x: " + x + " y: " + y); // here can print the correct position
// if I add the two values here, and return them. How can I receive the values in funciton init()
// var clickPosition={"x":x, "y":y};
// return clickPosition;
}
</script>