所以我的JS代码有问题。会发生什么事情,当我在div上执行鼠标点击事件时,它总是在其中执行一半操作,但另一半只是在一半的时间内完成。
这是我的js
$(document).ready(function(){
var currentMousePosition = new MousePosition(0,0);
var positionArray = []
$("html").mousemove(function(event){
if(currentMousePosition.x != event.pageX || currentMousePosition.y != event.pageY){
currentMousePosition.x = event.pageX;
currentMousePosition.y = event.pageY;
if(positionArray.length<500){
positionArray.push(new MousePosition(currentMousePosition.x,currentMousePosition.y));
}
//$("#array").html(JSON.stringify(positionArray));
$("#data").html("( "+event.pageX+" , "+event.pageY+" ) - moves: "+positionArray.length);
}
});
$("#mouse").on("click",function(){
var start = new Date().getTime();
var m1=0;
var m2=0;
for(var i=0;i<positionArray.length-2;++i){
m1=(positionArray[i+1].y-positionArray[i].y)/(positionArray[i+1].x-positionArray[i].x);
m2=(positionArray[i+2].y-positionArray[i].y)/(positionArray[i+2].x-positionArray[i].x);
while(m1==m2){
var p=i+2;
positionArray.splice(p-1,1);
m2=(positionArray[p].y-positionArray[i].y)/(positionArray[p].x-positionArray[i].x);
}
}
var end = new Date().getTime();
var time = end - start;
$("#array").html(JSON.stringify(positionArray));
$("#mouse").html(time);
$("#data").html("( "+event.pageX+" , "+event.pageY+" ) - moves: "+positionArray.length);
});
});
和相应的html
<button id="mouse">time</button>
<div id="data"></div>
<div id="array"></div>
<div id="time"></div>
我知道当我点击#mouse时,for循环总会通过。但是,那些3 .html更新并不适用。这很奇怪,因为它的随机基数为50%。
我是JS newby,我有任何明显的错误吗?
由于
更新 这样做是每次鼠标移动时检测并将位置保存在positionArray中。当我单击#mouse div时,它会遍历数据并检查一行中的点,并删除它们,尽管算法不是这里的重点。点击后,它应该应用该算法(它所做的)并更新那些#array,#mouse和#date的文本(它没有&#t;)。
有任何线索吗?