2017-05-26 51 views
0

希望找到一些幫助完成此問題。JS Func。日誌信息與時間間隔

每個(數字參數)將消息參數記錄到控制檯。實現一個html按鈕來啓動和停止這個序列。

在嘗試這個問題時,我能夠得到這個結果。

var displayLog = function Container(param) { 

     var message = 'any string'; // Local message variable 
     var timeCount = "10"; // Local time count variable 

     setInterval(function getLoggeddemo(message,timeCount) { 
     console.log(message); 
     return getLoggeddemo; 
     }(), timeCount); 
    } 

的問題是要求顯示消息每隔(X)秒,當按鈕被啓動之間切換&停止。我目前正在試圖找出如何包含一個if/else語句來啓動和停止使用Html按鈕的序列。

+0

的setInterval和clearInterval(這將停止記錄)。 – vabii

+0

謝謝你只需要一點澄清我做的地方清除間隔後,它被設置爲clearInterval(function(){}) – khalebrucht22

+0

函數也可以知道如何啓動和停止這個HTML按鈕,我可能會使用if/else語句正確嗎?根據問題 – khalebrucht22

回答

1

的幾個問題:

  • 不要叫你想傳遞給到setInterval功能:所以函數體後刪除括號。

  • 你好像永遠不會打電話給displayLog

  • timeCount應該是一個數字,而不是一個字符串:它是間隔持續的毫秒數。

  • 按鈕點擊間隔邏輯沒有影響。

  • 返回setInterval回調中的內容沒有任何意義。此外,參數將不會提供給該回調:刪除這些參數。

我建議不要添加/刪除事件偵聽器,而是使用一個布爾變量,表示你現在所處的狀態,並根據在一個執行相應的操作,只需單擊處理程序:

var i = 0; 
 
var displayLog = function Container(message) { 
 
    console.log(i++, message); 
 
    // Return the id of the interval 
 
    return setInterval(function getLoggeddemo() { // no arguments here 
 
     console.log(i++, message); 
 
    }, 1000); // Every second 
 
} 
 

 
var mixBut = document.getElementById("mixBut"); 
 
var interval = null; 
 
mixBut.addEventListener("click", toggle); 
 

 
function toggle(){ 
 
    if (interval === null) { 
 
     mixBut.value = "Stop"; 
 
     interval = displayLog("Hi there!"); 
 
    } else { 
 
     mixBut.value = "Start"; 
 
     clearInterval(interval); 
 
     interval = null; 
 
    } 
 
}
<button id="mixBut">Mix</button>