Javascript 引导表搜索功能
我希望我的主题是正确的放置在这个论坛。 我有一个HTML表格,里面有多达3000个元素和5列 对于这个表和其他表,我编写了一个函数,用于根据列的内容对表进行过滤 更确切地说,我为每一列添加了一个输入。然后,通过输入的筛选值实时搜索表的内容(按键后) 目前,我正在用一个包含多达2000个元素的表测试该函数。速度还可以,但可能会更好。我担心一张包含3000个元素或更多元素的桌子可能是一项艰巨的挑战 我希望从你那里得到一些想法/意见/建议,我可以做些什么来改进我的算法Javascript 引导表搜索功能,javascript,html,algorithm,optimization,Javascript,Html,Algorithm,Optimization,我希望我的主题是正确的放置在这个论坛。 我有一个HTML表格,里面有多达3000个元素和5列 对于这个表和其他表,我编写了一个函数,用于根据列的内容对表进行过滤 更确切地说,我为每一列添加了一个输入。然后,通过输入的筛选值实时搜索表的内容(按键后) 目前,我正在用一个包含多达2000个元素的表测试该函数。速度还可以,但可能会更好。我担心一张包含3000个元素或更多元素的桌子可能是一项艰巨的挑战 我希望从你那里得到一些想法/意见/建议,我可以做些什么来改进我的算法 // // Search Tab
//
// Search Table by filter and index
//
// e -> event
// inputs -> search-inputs
// idx -> column-index-array
//
function search_table(e, inputs, idx){
//get values from search-textbox's
var values = new Array();
Array.each(inputs, function(v){ values.push(v.get('value').toString().toUpperCase()); });
//get table-rows
var haystack = inputs[0].getParent('table').getChildren('tbody').getChildren('tr')[0];
var stack = new Array(); //row-stack for recoloring rows
var hide = 'row_hide';
//each row
Array.each(haystack, function(row){
var childs = row.getChildren('td'); //columns
var texts = new Array(); //content of cols
//check idx
if(idx == null){
//set index-array from 0 to length
idx = new Array();
Array.each(childs, function(v, i){ idx.push(i); });
}
//get content from columns based on allowed index
Array.each(childs, function(child, i){
if(idx.indexOf(i) != -1)
texts.push(child.get('html').toString().toUpperCase());
});
//remove css-class for colored row
row.removeClass('row_0');
row.removeClass('row_1');
//check if content matches search-input-values for each column
var flag = true;
Array.each(texts, function(text, i){ flag &= text.contains(values[i]);});
if(flag){
//add to recoloring stack and 'unhide' row
stack.push(row);
row.removeClass(hide);
} else {
//hide if not matching
row.addClass(hide);
}
});
//recolor matching rows
Array.each(stack, function(row, i){
row.addClass('row_' + (i % 2));
});
}
问候
马里奥这个问题似乎离题了,因为它更适合OK谢谢。有人能把它移走吗?还是我必须把它转寄到那里?