软工终结日报-多条件查询的逻辑修改 6/8

之前做的多条件查询中,相关的查询条件全部使用and相连,毕竟数据是直接加载到页面上的,所以其实是在页面上进行的数据集分割

那么,我们可不可以将判断条件变得更加多元化呢?比如动态的and和or。

我先写了一个条件判断函数:

    function srcs(p){
        
        var s2=document.getElementById("s2").value;
        var s3=document.getElementById("s3").value;
        var s4=document.getElementById("s4").value;
        var s5=document.getElementById("s5").value;
        var s6=document.getElementById("s6").value;
        
        var s0=[s2,s3,s4,s5,s6];

        var title=document.getElementById("title").value;
        var title1=document.getElementById("title1").value;
        var title2=document.getElementById("title2").value;
        var title3=document.getElementById("title3").value;
        var title4=document.getElementById("title4").value;
        var title5=document.getElementById("title5").value;
        
        var titles=[title1,title2,title3,title4,title5];
        
        var a=p.includes(title);
        
        for(i=0;i<5;i++){
            if(s0[i]=='和'){
                a=a&&(p.includes(titles[i]));
            }else{
                a=a||(p.includes(titles[i]));
            }
        }    
        return a;
    }

通过获取到选项元素的值并借此来判断的函数

之后改写原本的条件筛选函数:

function changeable(){
        var year=document.getElementById("year").value;
        var title=document.getElementById("title").value;
        var title1=document.getElementById("title1").value;
        var title2=document.getElementById("title2").value;
        var title3=document.getElementById("title3").value;
        var title4=document.getElementById("title4").value;
        var title5=document.getElementById("title5").value;
        var tab=document.getElementById("iccvtable");
        for( var i=0;i<tab.rows.length;){
                  tab.deleteRow(0);   
        }
        tab=document.getElementById("eccvtable");
        for( var i=0;i<tab.rows.length;){
                  tab.deleteRow(0);   
        }
        tab=document.getElementById("cvrptable");
        for( var i=0;i<tab.rows.length;){
                  tab.deleteRow(0);   
        }
        ic=0;ec=0;cv=0;
        for(var i = 0;i < iccv.length; i++){
            if(srcs(iccv[i].title.toLowerCase())&&iccv[i].year.includes(year)){
            dogo("iccvtable",iccv[i].title,iccv[i].links,iccv[i].year);
            ic++;
            }
        }
        for(var i = 0;i < eccv.length; i++){
            if(srcs(eccv[i].title.toLowerCase())&&eccv[i].year.includes(year)){
            dogo("eccvtable",eccv[i].title,eccv[i].links,eccv[i].year);
            ec++;
            }
        }
        for(var i = 0;i < cvrp.length; i++){
            if(srcs(cvrp[i].title.toLowerCase())&&cvrp[i].year.includes(year)){
            dogo("cvrptable",cvrp[i].title,cvrp[i].links,cvrp[i].year);
            cv++;
            }
        }
    }

好,这样就实现了多条件查询咯!

原文地址:https://www.cnblogs.com/Sakuraba/p/14912368.html