gpt4 book ai didi

javascript - 如何在不退出 javascript 的情况下从 javascript 更新网页

转载 作者:行者123 更新时间:2023-11-28 16:13:07 29 4
gpt4 key购买 nike

我想用这样的东西来制作一个 html 页面的动画:

function showElements(a) {   
for (i=1; i<=a; i++) {
var img = document.getElementById(getImageId(i));
img.style.visibility = 'visible';
pause(500);
}
}

function pause(ms) {
ms += new Date().getTime();
while (new Date() < ms){}
}

不幸的是,该页面仅在 JavaScript 完成后才会呈现。

如果我添加

 window.location.reload();

每次暂停后(500);调用,这似乎迫使我的 JavaScript 退出。 (至少,我没有到达 JavaScript 中的下一行代码。)

如果我插入

 var answer=prompt("hello");

每次暂停(500)后,这正是我想要的(即页面更新),除了我不想要恼人的提示,因为我实际上不需要任何用户输入。

那么...是否有某些东西我可以在暂停后调用,强制刷新页面,不请求用户任何输入,并允许我的脚本继续?

最佳答案

当 JavaScript 线程运行时,渲染线程不会更新页面。您需要使用setTimeout .

您可以使用在 ai< 上带有闭包的内部函数来实现此目的,而不是创建第二个函数或将 i 暴露给外部代码:

function showElements(a) {
var i = 1;
function showNext() {
var img = document.getElementById(getImageId(i));
img.style.visibility = 'visible';
i++;
if(i <= a) setTimeout(showNext, 500);
}
showNext();
}
<小时/>

If I add window.location.reload(); after each pause(500) invocation, this seems to force my javascript to exit

window.reload() 使浏览器丢弃当前页面并从服务器重新加载它,因此您的 JavaScript 停止。

<小时/>

If I insert var answer=prompt("hello"); after each pause(500), this does exactly what I want.

promptalertconfirm 几乎是唯一可以真正暂停 javascript 线程的东西。在某些浏览器中,即使这些仍然会阻塞 UI 线程。

关于javascript - 如何在不退出 javascript 的情况下从 javascript 更新网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288616/

29 4 0
文章推荐: javascript - 通过单击内部的链接在两个
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com