如何将 while 循环中生成的值存储到变量中供以后在 JQuery 中使用

How to store a value generated in a while loop to a variable for later use in JQuery

我有以下由 "mousemove" 事件执行的代码:

$("div").on("mousemove", function( event ) {
    var k = 0;
    var x = 0;
    while(k<y){
        k++;
        x = k;
    }
}

问题是一旦循环已经运行并停止,鼠标从当前位置移动一个像素,恰好没有满足条件,我松开[=的值12=] 即 var x = k; 相反,var x 被重置为 0(零),就像循环之前一样。即使在光标移动后,我也需要保留 var x = k++ 的值以备后用。

请指教。谢谢。

使x成为全局变量。

var x = 0;
$("div").on("mousemove", function( event ) {
  k = 0;
  while(k<y){
   k++;
   var x = k;
  }
}

variables scope

只需将循环外的变量存储在全局范围内,循环退出后它会保持状态。

现在,每次触发 'mousemove' 时,您的事件处理程序都会将 k 和 x 设置为 0。在事件处理程序外部声明 x 以保存 x 的值。

var x = 0;
$('div').on('mousemove', function(event){
  // the rest of your code goes here
}

存储此类值的最佳位置是元素的数据属性。假设您的页面上有多个 div 元素,您当前的设置要求您为每个 div:

设置一个唯一变量
$('div').on('mousemove', function( e ) {
    var k = $(this).data('k') || 0;
    //......
    $(this).data('k', +k+1);
    console.log( $(this).data('k') );
});

$('div').on('mousemove', function( e ) {
        var k = $(this).data('k') || 0;
        //......
        $(this).data('k', +k+1);
        console.log( $(this).data('k'), this );
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="div1">DIV 1</div>
<div class="div2">DIV 2</div>
<div class="div3">DIV 3</div>

只需确保在循环外为变量 x 赋值,以便在循环退出时保留 x 的新值。

注意:通过删除 x 之前的 "var" 确保循环内的 var x 是全局 x,如下所示。这样,x 的值将可以在循环外和任何包装循环的函数中使用。

var x = 0;

$("div").on("mousemove", function( event ) {
var k = 0;
  while (k<y){
    k++;
    x = k; //Note that it's "x=k" and not "var x = k". This makes x global
    }
  }