Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 引导表搜索功能_Javascript_Html_Algorithm_Optimization - Fatal编程技术网

Javascript 引导表搜索功能

Javascript 引导表搜索功能,javascript,html,algorithm,optimization,Javascript,Html,Algorithm,Optimization,我希望我的主题是正确的放置在这个论坛。 我有一个HTML表格,里面有多达3000个元素和5列 对于这个表和其他表,我编写了一个函数,用于根据列的内容对表进行过滤 更确切地说,我为每一列添加了一个输入。然后,通过输入的筛选值实时搜索表的内容(按键后) 目前,我正在用一个包含多达2000个元素的表测试该函数。速度还可以,但可能会更好。我担心一张包含3000个元素或更多元素的桌子可能是一项艰巨的挑战 我希望从你那里得到一些想法/意见/建议,我可以做些什么来改进我的算法 // // Search Tab

我希望我的主题是正确的放置在这个论坛。 我有一个HTML表格,里面有多达3000个元素和5列

对于这个表和其他表,我编写了一个函数,用于根据列的内容对表进行过滤

更确切地说,我为每一列添加了一个输入。然后,通过输入的筛选值实时搜索表的内容(按键后)

目前,我正在用一个包含多达2000个元素的表测试该函数。速度还可以,但可能会更好。我担心一张包含3000个元素或更多元素的桌子可能是一项艰巨的挑战

我希望从你那里得到一些想法/意见/建议,我可以做些什么来改进我的算法

//
// 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谢谢。有人能把它移走吗?还是我必须把它转寄到那里?