JavaScript во время mousedown
var mdflag;
var count = 0;
document.addEventListener("mousedown",mdown,false);
document.addEventListener("mouseup",mup,false);
}
function mdown()
{
mdflag=true;
while(mdflag)
document.getElementById("testdiv").innerHTML = count++;
}
function mup()
{
mdflag = false;
}
Я хочу запустить код, пока мышь не работает, я не могу найти ничего, чтобы предложить, что я могу сделать, пока (mousedown), поэтому я попытался сделать флаг для mousedown, который сбрасывается на мышь, однако я верю, что цикл while-это то, что заставляет меня застрять в бесконечном цикле.
любой совет, чтобы помочь с тем, что я пытаюсь достичь?
2 ответов
вы должны вызвать действие mousedown в некоторый разумный интервал. Я бы сделал так:
var mousedownID = -1; //Global ID of mouse down interval
function mousedown(event) {
if(mousedownID==-1) //Prevent multimple loops!
mousedownID = setInterval(whilemousedown, 100 /*execute every 100ms*/);
}
function mouseup(event) {
if(mousedownID!=-1) { //Only stop if exists
clearInterval(mousedownID);
mousedownID=-1;
}
}
function whilemousedown() {
/*here put your code*/
}
//Assign events
document.addEventListener("mousedown", mousedown);
document.addEventListener("mouseup", mouseup);
//Also clear the interval when user leaves the window with mouse
document.addEventListener("mouseout", mouseup);
вы не можете этого сделать, так как ваша функция должна завершиться до обработки другого события, но вы можете повторно вызвать функцию, пока мышь не будет :
var timer;
document.addEventListener("mousedown", function(){
timer=setInterval(function(){
document.getElementById("testdiv").innerHTML = count++;
}, 100); // the above code is executed every 100 ms
});
document.addEventListener("mouseup", function(){
if (timer) clearInterval(timer)
});