我正在开发一个充当数据库查询工具的网页。数据库表的大小非常大(26MB),因此我决定将表中的每一行作为 JavaScipt 对象存储在一个数组中(以防止数据的连续传输)。
页面加载没有问题。当我开始“查询”JavaScript 对象数组时,麻烦就开始了。
下面的函数在 HTML 文本框的 keyup 事件上执行。当此函数执行时,它会导致浏览器变得无响应并暂时冻结,直到函数完成执行。我以前读过使用 setTimeout() 和 setInterval() 函数来克服这个问题,但我无法使这些适应我自己的问题。
function searchStock() {
results.innerHTML = "Stock Loading..."; //results is a div tag where query results are displayed
var stringTyped = nameTextBox.value;
var resultString = "<table>";
for (var z = 0; z < stock.length; z++) //stock is the array of objects to be searched
{
if (stringTyped == "") {
resultString = resultString + rows[z]; //rows is an array consisting of how each item in the stock is displayed
}
else {
if (stock[z].Stock_Name.indexOf(stringTyped) != -1) {
resultString = resultString + rows[z];
}
}
}
resultString = resultString + "</table>";
results.innerHTML = resultString;
}