var timer;
var object;
var thing;
var digit="0";
//this function fires when a single click occurs
function one(event){
timer = setTimeout("AddDigit(object)",500);
object = event;
}
//The AddDigit function keeps firing right after my double click function
function AddDigit(x){
object=x;
if (eval(digit) == 0){ digit = object; }
else{ digit = digit + object; }
document.calculator.display.value = object;
}
// This function is supposed to stop the AddDigit function from firing...
document.ondblclick = function(button){
clearTimeout(timer);
thing=button.target;
thing.setAttribute("class","duction");
}
1 に答える
1
ダブルクリックは、2 つのクリック イベントを送出してから、ダブルクリック イベントを送出します。2 回目one
に呼び出されると、新しい ID に置き換えられますtimer
が、元のタイムアウトはまだ準備ができています。dblclick ハンドラが呼び出されると、2 番目のタイムアウトはクリアされますが、最初のタイムアウトはクリアされません。
one
解決策は、を割り当てる前に既存のタイムアウトをクリアすることtimer
です。
function one(event)
{
clearTimeout(timer);
timer = setTimeout(function() {
AddDigit(event);
}, 500);
}
http://jsfiddle.net/74qYF/を参照してください
于 2012-10-17T01:26:03.717 に答える