在我的網頁中,使用 JavaScript,我想首先滾動 div,然后突出顯示 div 中的一個物件。
這是我正在使用的代碼,它完全正常作業,但是,我想避免超時。
let commentDiv = document.getElementById('commentsDiv');
commentDiv.scrollTop = scrollValue;
setTimeout(function(){decorateMarker(markerObj);}, 500);
我更改了我的代碼以使用 promise,但它不起作用。decorateMarker(markerObj) 運行,但注釋物件不會突出顯示,除非我添加 setTimeout。
let myPromise = new Promise(function(myResolve, myReject) {
commentDiv.scrollTo(0,scrollValue);
myResolve(markerObj);
});
myPromise.then(
function(markerObj) {
//highlight comment
decorateMarker(markerObj);
}
)
關于如何確保在突出顯示代碼運行之前完全完成滾動的任何建議?
uj5u.com熱心網友回復:
實作此目的的一種方法是在呼叫 scrollTo 時附加滾動偵聽器。然后在到達所需位置后移除偵聽器。通過這種方式,您可以確保僅在達到所需的滾動位置時才會突出顯示。
我創建了一個非常簡單的實作作為示例:
代碼筆示例
let button = document.getElementById("scrollToElem");
button.addEventListener('click', () => {
window.scrollTo({top: 2000, behavior: "smooth"});
scrollHandler = () => {
if(this.scrollY === 2000){
console.log('remove scroll listener');
document.removeEventListener('scroll', scrollHandler, true);
//Now do your highlight.
}
}
document.addEventListener('scroll', scrollHandler, true);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/344613.html
標籤:javascript 异步
下一篇:Kivy:異步更新標簽
