如何将 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;
}
}
只需将循环外的变量存储在全局范围内,循环退出后它会保持状态。
现在,每次触发 '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
}
}
我有以下由 "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;
}
}
只需将循环外的变量存储在全局范围内,循环退出后它会保持状态。
现在,每次触发 '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
}
}