2017-05-26 53 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>