软工终结日报-多条件查询的逻辑修改 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++; } } }
好,这样就实现了多条件查询咯!