我正在尝试在其定义的函数之外使用变量值。思想I.只需要在函数外声明变量,但不会削减它。对于那些知道的人来说,要轻松一点吗?
Fiddle Here
jQuery(document).ready(function() {
var readOut;
var readOut2;
$(document).mousemove(function(e) {
readOut1 = e.pageX;
readOut2 = e.pageY;
$('#var1').html(readOut1);
});
$('#var2').html(readOut2);
})
感谢所有人,特别是Andy E的解释和solution。
答案 0 :(得分:5)
您通过一个注册到事件处理程序的回调函数来分配变量。这意味着当它运行时:
$('#var2').html(readOut2);
readOut2
的值为 undefined ,因为它尚未由 mousemove 处理函数设置。在当前排队代码停止执行并且用户移动鼠标之前,该处理程序不会触发。您可以在与变量相同的范围内定义函数,并从 mousemove 处理程序中调用该函数。
Re:您对另一个答案的评论,您可以使用计时器:
jQuery(document).ready(function() {
var readOut1;
var readOut2;
$(document).mousemove(function(e) {
readOut1 = e.pageX;
readOut2 = e.pageY;
$('#var1').html(readOut1);
});
window.setInterval(function () {
$('#var2').html(readOut2);
}, 300);
});
答案 1 :(得分:2)
我想你想跟踪光标坐标,看看更新后的源代码:
jQuery(document).ready(function() {
var readOut1;
var readOut2;
$(document).mousemove(function(e) {
readOut1 = e.pageX;
readOut2 = e.pageY;
$('#var1').html(readOut1);
$('#var2').html(readOut2);
});
})
答案 2 :(得分:1)
似乎是一个计时问题。
这一行
$('#var2').html(readOut2);
将在document.ready上调用,而mousemove事件尚未被调用,因此readOut2将没有值。
答案 3 :(得分:1)
但想要使用on mousemove函数之外的值
由于在运行mousemove事件处理程序之前可能未设置变量readOut1
和readOut2
,因此您必须调用将使用mousemove处理程序中的这些变量的任何代码。
示例:
$(document).mousemove(function(e) {
readOut1 = e.pageX;
readOut2 = e.pageY;
doStuffWithReadOuts(/* possibly passing readouts as arguments instead... */);
});
function doStuffWithReadOuts() {
$('#var1').html(readOut1);
$('#var2').html(readOut2);
}