jquery / javascript - 从函数外部访问变量

时间:2010-08-23 09:57:07

标签: javascript jquery variables

我正在尝试在其定义的函数之外使用变量值。思想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

4 个答案:

答案 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);
    });

})​

http://jsfiddle.net/xSa2T/2/

答案 2 :(得分:1)

似乎是一个计时问题。

这一行

$('#var2').html(readOut2); 

将在document.ready上调用,而mousemove事件尚未被调用,因此readOut2将没有值。

答案 3 :(得分:1)

  

但想要使用on mousemove函数之外的值

由于在运行mousemove事件处理程序之前可能未设置变量readOut1readOut2,因此您必须调用将使用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);
}