2016-12-24 68 views
-2

我有兩個功能,x()和'Y(),點擊其按鈕,buttonXbuttonY他們兩個調用,並呼籲暫停實際行動停止兩個功能有超時。我想達到什麼:啓動和使用兩個按鈕

  1. buttonX被點擊,功能y()不執行任何更長的時間,並且功能x()被稱爲 - 有超時;
  2. 按鈕Y被點擊時,功能x()不再執行,並且函數y()被調用 - 帶有超時;

該怎麼辦?

HTML

<button onclick = "x()">button1</button> 
<button onclick = "y()">button2</button> 

JS

function x(){ 
    // dosomething; 
    // stop execution of y() 
    setTimeout(x,2000); 
} 
        } 
function y(){ 
    // dosomeother thing; 
    // stop execution of x() 
    setTimeout(y,2000); 
} 
+3

請添加代碼,你必須在這裏看看,太:MCVE] –

+0

嘗試設置變量'timeoutX = setTimeout的()',那麼你可以通過調用取消' clearTimeout(timeoutX)'。對於timeoutY可以做同樣的事情。 –

回答

1

我會通過調節接近它的一些布爾值,即:

HTML

超時內兩個動作
<button id="firstFunction">Run first function</button> 
<button id="secondFunction">Run second function</button> 

JS

var callFirstFunction = true; 
var callSecondFunction = true; 

document.getElementById("firstFunction").addEventListener("click", function(e){ 
    callFirstFunction = true; 
    callSecondFunction = false; 
    setTimeout(function(){ 
    if(callFirstFunction) { 
     //your first function action 
    } 
    }, 10000); 
} 

document.getElementById("secondFunction").addEventListener("click", function(e){ 
    callSecondFunction = true; 
    callFirstFunction = false; 
    setTimeout(function(){ 
    if(callSecondFunction) { 
     //your second function action 
    } 
    }, 10000); 
} 
0

這裏是你使用clearTimeout功能是怎麼做的。它比在回調函數中使用if語句更簡潔一些,因爲回調函數被完全取消。

var timeoutOne; 
 
var timeoutTwo; 
 

 
function x(){ 
 
    clearTimeout(timeoutTwo); 
 
    timeoutOne = setTimeout(function(){ 
 
    alert("Button One Pressed");   
 
    }, 1000); 
 
} 
 

 
function y(){ 
 
    clearTimeout(timeoutOne); 
 
    timeoutTwo = setTimeout(function(){ 
 
    alert("Button Two Pressed");   
 
    }, 1000); 
 
}
<button onClick="x()">Button One</button> 
 
<button onClick="y()">Button Two</button>