【发布时间】:2019-07-10 17:03:33
【问题描述】:
我正在尝试编写代码来向下滚动网站上的 div。 div 有计数,当您滚动到底部时会自动加载。我通过添加一个带有自身链接的元素,单击它,删除它,然后重新添加(到新底部)来完成此操作。我的代码如下所示:
function showWholeDiv() {
clearTimeout();
console.log("Running:");
let contents;
let myDiv = document.getElementsByClassName("{classname}")[0];
contents = myDiv.children;
let elem = document.createElement("a");
elem.id = "scroll-here";
elem.href = "#scroll-here";
myDiv.appendChild(elem);
scrollDiv(myDiv, elem, 10);
};
function scrollDiv(div, scrollElem, scrolls) {
clearTimeout();
if (scrolls > 0) {
console.log("scrolling...");
div.appendChild(scrollElem);
document.getElementById("scroll-here").click();
scrollElem.remove();
setTimeout(scrollDiv(div, scrollElem, scrolls - 1), 100);
} else {
console.log(div);
}
};
它适用于一个滚动,但随后我收到一条奇怪的消息,它一次又一次地输出“滚动...”,没有延迟:
scrolling...
680a7736f556.js:44 [Violation] 'setTimeout' handler took 179ms
contentScript.js:34 scrolling...
680a7736f556.js:44 [Violation] 'setTimeout' handler took 143ms
contentScript.js:34 scrolling...
680a7736f556.js:44 [Violation] 'setTimeout' handler took 162ms
contentScript.js:34 scrolling...
680a7736f556.js:44 [Violation] 'setTimeout' handler took 154ms
contentScript.js:40 <div class="PZuss">…</div>
我添加了 clearTimeouts 以查看是否是问题所在,但没有帮助。这里发生了什么?我对 setTimeout 有什么误解吗?
【问题讨论】:
-
你正在立即调用
scrollDiv...传递一个调用它的函数 -
知道了!谢谢你。现在可以使用了。
标签: javascript html recursion dom settimeout