我有2个按钮。第一个运行提醒,另一个停止它:
<input type="range" id="range" min="1" max="480" onInput="syncValues('intrvl',this);" />
<input type="text" id="intrvl" value="0.07" onInput="syncValues('range',this);" />
以下是脚本(可在Plunker上访问实时版本:http://plnkr.co/edit/9kslSw6lyflIkMTanCrA):
function syncValues(inpToId, inpFrom) {
if (!inpFrom) inpFrom = document.getElementById('intrvl');
document.getElementById(inpToId).value = inpFrom.value;
}
window.onload = function() {
syncValues('range');
var makeDecition = (function() {
var tm,
stp = false,
gotm = false,
sttm = function(cancel) {
var min = document.getElementById('intrvl').value;
tm = setTimeout(makeDecition, min * 60 * 1000);
};
return function(cancel) {
console.dir(cancel);
if (cancel) {
stp = false;
clearTimeout(tm);
} else {
if (gotm) {
if (!stp)
if (!confirm("Go on?")) gotm = null;
} else {
stp = false;
gotm = true;
}
if (gotm !== null) sttm();
}
};
}());
document.getElementById('start').onclick = function(event) {
makeDecition();
event.currentTarget.disabled = true;
};
document.getElementById('stop').onclick = function(event) {
makeDecition();
document.getElementById('start').disabled = false;
makeDecition(true);
};
};
我希望在单击“停止”按钮后,超时将被删除,脚本将立即终止。但它告诉我确认。我检查了调用makeDecition(true)后发生了什么,发现该函数没有得到 cancel 参数,首先,如上所述,它调用confirm并且只有在param到来之后才调用。 任何人都可以解释如何修复它以及它为什么会发生?
答案 0 :(得分:0)
你对你的&#34; makeDecition&#34;进行了一次迷失无争议的电话。在你的&#34;停止&#34;开始时的功能处理程序:)