下面的代码由" 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
的值,以便以后在光标移动后使用。
请指教。感谢。
答案 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') );
});
$('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;
答案 1 :(得分:0)
制作x
全局变量。
var x = 0;
$("div").on("mousemove", function( event ) {
k = 0;
while(k<y){
k++;
var x = k;
}
}
答案 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
}
}