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

时间:2015-04-05 21:24:12

标签: javascript jquery while-loop onmousemove

下面的代码由" mousemove"执行。事件:

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

问题在于,一旦循环已经运行并停止,并且鼠标从当前位置移动一个像素,并且发生条件未满足,我将失去k++的值,即{ {1}}而是将var x = k;重置为0(零),就像循环之前一样。我需要保留var x的值,以便以后在光标移动后使用。

请指教。感谢。

5 个答案:

答案 0 :(得分:2)

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

$('div').on('mousemove', function( e ) {
    var k = $(this).data('k') || 0;
    //......
    $(this).data('k', +k+1);
    console.log( $(this).data('k') );
});

&#13;
&#13;
$('div').on('mousemove', function( e ) {
        var k = $(this).data('k') || 0;
        //......
        $(this).data('k', +k+1);
        console.log( $(this).data('k'), this );
    });
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

制作x全局变量。

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

variables scope

答案 2 :(得分:0)

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

答案 3 :(得分:0)

现在,您的事件处理程序会在每次“鼠标移动”时将k和x设置为等于0。被触发了。在事件处理程序之外声明x以保存x的值。

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

答案 4 :(得分:0)

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

注意:通过删除&#34; var&#34;确保循环内的var x是全局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
    }
  }