我是一個 js 新手,但從我讀到的內容來看,使用clearIntervalwith 之前回傳的 idsetInterval應該重置計時器。
在踏板推動時,我收到一個具有正值的 midi 事件,然后在踏板釋放時收到一個零值的相同事件。
使用下面的代碼,我可以看到我的頁面在發布時變成紅色,但頁面一直在滾動。知道為什么嗎?
function handleMIDIMessage(event) {
var scroll_id;
if (event.data.length === 3) {
if (event.data[0] == 176 && event.data[1] === 67) {
if (event.data[2] > 0) {
scroll_id = setInterval(function() {
window.scrollBy({
top: 50,
behaviour: "smooth"
});
}, 1000);
document.body.style.background = 'green';
} else {
document.body.style.background = 'red';
clearInterval(scroll_id);
}
}
}
}
uj5u.com熱心網友回復:
您需要在外面宣告間隔,這樣您就不會不斷創建新變數并丟失 id。您可能還應該檢查以確保您創建的時間間隔不超過一個。
//declare it so it is not overwritten
var scroll_id;
function handleMIDIMessage(event) {
if (event.data.length === 3) {
if (event.data[0] == 176 && event.data[1] === 67) {
if (event.data[2] > 0) {
// if we were defined before, cancel the last one
if (scroll_id) window.clearInterval(scroll_id);
scroll_id = setInterval(function() {
window.scrollBy({
top: 50,
behaviour: "smooth"
});
}, 1000);
document.body.style.background = 'green';
} else {
document.body.style.background = 'red';
clearInterval(scroll_id);
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/343821.html
標籤:javascript
下一篇:在本地存盤中洗掉錯誤的專案
