javascript - 如何加快html元素的更新?

标签 javascript jquery html

我目前使用以下代码 -

jQuery(window).on('load', function() {
  // read list of items from the table
  ...
  // getting data the DB
  var connectionstring="Data Source=datasource;Initial Catalog=catalog;User 
  ID=userid;Password=pass;Provider=SQLOLEDB";

  connection.Open(connectionstring);
  var rs = new ActiveXObject("ADODB.Recordset");

  rs.Open("select top 10 from db where id in myitems_list")

... 
// display the result
for (currentRow = 1; currentRow < myitems_list.length + 1; currentRow++) { 
    rs.MoveFirst;
    while(!rs.eof)
        if (jQuery(jQuery(".mytable")[1].rows[currentRow].cells[0]).text().trim()==rs.fields(0)) {
jQuery(jQuery(".mytable")[1].rows[currentRow].cells[1]).html(rs.fields(1));
        ...
    }
});

这里我做了以下事情:

  1. 从表的第一列读取项目列表(有 id)
  2. 对于在表中找到的每个项目,从数据库中获取数据
  3. 用从数据库接收到的数据更新表格(项目的初始顺序应该不变)

更新表格需要几分钟时间。 我可以做些什么来加快表更新过程? 或者,也许,我应该将它移动到单独的线程?

最佳答案

我不确定这个模式叫什么,但你有两个排序数据集,你想有效地从另一个更新一个。您可以使用循环遍历每个列表一次的算法。

以相同的方式对两个列表进行排序,并为每个列表创建一个计数器变量。 将 a1 的第 元素与 a2 的第 jth 元素进行比较。如果相等,则从 a2 更新 a1 并递增 i 和 j。如果小于,递增 i。否则递增 j。

var a1 = [sorted array];
var a2 = [similarly sorted array];

var i=0, j=0;

while (i < a1.length && j < a2.length) {
  if (a1[i] == a2[j]) {
    // update a1[i]
    i++;
    j++;
  } else if (a1[i] < a2[j]) {
    i++;
  } else {
    j++;
  }
}

关于javascript - 如何加快html元素的更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781374/

相关文章:

javascript - 调整大小时 Div 闪烁

javascript - React - 未捕获类型错误 : this. getDOMNode 不是函数

html - 无法将图像与前景和背景混合

javascript - 继续在 javascript 中播放动画

javascript - 如何在 vaadin 页面中集成 google-maps?

javascript - For 循环生成 URL 不起作用

html - CSS 区分 hover on element 和 it's::before 伪元素

javascript - 动态设置页面背景图片

javascript - 通过 javascript 填充文本框时,使用 ng-model 输入未绑定(bind)

javascript - Angular 4 没有在我的子组件中渲染我的 ID