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   に答える