Javascript 如何在滚动时填充html表单中的字段

Javascript 如何在滚动时填充html表单中的字段,javascript,forms,scroll,population,Javascript,Forms,Scroll,Population,我有一张表格,大约有300个字段。我想在点击按钮时显示数据。表单的数据存储为对象(键值对)。目前,在一次运行中填充完整的300个字段时,我面临一些延迟。有没有办法填充最初在表单中显示的字段,然后滚动到填充else的区域,作为其在UI中的显示?老实说,如果表单中有300个元素,那么可能是时候将该页面拆分为子页面了。:) 您不需要担心滚动位置。您要做的不是在一个紧凑的、渲染阻塞的、CPU绑定的循环中填充表单 您希望尽可能快地填充表单,并保持页面响应能力 只需将代码放入setTimeout()。假设您

我有一张表格,大约有300个字段。我想在点击按钮时显示数据。表单的数据存储为对象(键值对)。目前,在一次运行中填充完整的300个字段时,我面临一些延迟。有没有办法填充最初在表单中显示的字段,然后滚动到填充else的区域,作为其在UI中的显示?

老实说,如果表单中有300个元素,那么可能是时候将该页面拆分为子页面了。:)

您不需要担心滚动位置。您要做的不是在一个紧凑的、渲染阻塞的、CPU绑定的循环中填充表单

您希望尽可能快地填充表单,并保持页面响应能力

只需将代码放入setTimeout()。假设您的表单正好有300个元素要填充(您可以找出如何处理动态大小的情况):

(i=0;i<30;i++)的
{
设置超时(20,功能(i){
对于(var j=i*10;j<10;j++){
流行元素(j);
}
});
}
这将导致浏览器填充10个表单元素,然后屈服,以便页面能够保持响应。根据需要调整超时值


编辑:是的,您还可以使用element.scrollTop、window.innerHeight和一个滚动事件执行滚动操作。但是,如果用户进一步跳转页面,仍然会有延迟。此外,它很复杂,并且有边缘情况。我认为上面的答案是您想要的——消除“延迟”。

您好,谢谢您的回复,我会尝试一下,并让您知道我也尝试过同样的方法,并且理解了逻辑,但这并没有给我所需要的优势。您能描述一下您看到的问题,以及您理想的行为方式吗?
for (i = 0; i < 30; i++) {
  setTimeout(20, function(i) {
   for (var j = i*10; j < 10; j++) {
      populateFormElement(j);
   }
  });
}