jdl*_*ung 3 javascript getelementbyid addeventlistener
当用户点击链接时,我使用javascript来捕捉x和y定位,到现在为止,我可以使它工作,但我希望它在function init()调用时返回两个值.我该怎么做?
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", init, false);
function init()
{
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", getPosition, false);
// how can I get the return values here?
}
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;
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>
Run Code Online (Sandbox Code Playgroud)
如果您有评论,您将永远无法访问变量,事件尚未发生.
相反,您可以做的是将匿名函数传递给事件处理程序,调用返回值的方法并在适当时使用它
function init()
{
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", function(event){
var result = getPosition(event);
// result is your return value
}, false);
}
Run Code Online (Sandbox Code Playgroud)
你不能
JavaScript无法进行时间旅行。
事件发生之前,事件处理函数不会运行。到那时,调用的函数addEventHandler将完成运行并返回。
事件处理函数需要处理数据本身,或者调用其他函数来处理数据。数据必须向前传输,而不能返回。