在已有的web项目当中修改查询bug

276 阅读3分钟

2019.04.11

问题

顶部搜索栏实现不了搜索的功能,然后发现这个button当中的find_sj()是无法解析的,一开始我以为是要搜索相应商品当中的id或者class,结果发现这些商品是动态生成的,也就是可以一样一样的传上去的,所以原本的html当中不存在相应商品的id或者class(也就是说要是我都没传,那商品id或者class怎么可能显示在上面?) 所以在front的index.jsp这个首页当中,后面的从383-547的代码,这些代码的东西实际上是不在主页显示出来的,所以首页商品的那一些信息都是在<%=s_html_spxx %>当中的,从这行jsp指令获取的,也就是在index.jsp上面的jsp指令进行获取的

然后我就在jsp页面上面的jsp指令找到了s_html_spxx,他的值是由c.java传过来的get_s_html_spxx方法处理之后传过来的

然后我现在来到c.java当中get_s_html_spxx方法,这个是方法是遍历那个list,然后通过s字符串变量批量输出商品相关信息,比如

可是这样子商品div的class不就是锁死了吗?只能固定是div_0了

已解决

终于解决了,直接在index.jsp当中的上面定义js函数即可,没必要在c.java中修改,所以js函数代码如下

function find_sj(){
    var s=$("#id_input_find").val();
    $(".div_0").css("display","none");
    $(".div_0[pp*='"+s+"']").css("display","");
}

可是这样子,还是只能搜索出小米手机而已,其他的手机全都搜索不到 不过这至少可以搜索了,同理,也可以用这种方法试着解决其他栏的比如手机尺寸,手机品牌,操作系统等等的搜索

现已解决

已经解决了操作系统栏的搜索问题,是数据库当中没有有关操作系统的数据,在数据库加上了就好了 现在在数据库上加上了数据之后,顶部的搜索栏也可以实现搜索功能了

但是现在三个栏的全部按钮并没有实现相应的功能

现已解决

很简单,分别对应设置三个js函数,直接$(".div_0").css("display","");即可 比如:

function find_spcc_all(){
    $(".div_0").css("display","");
}

之前出现过商品尺寸栏搜索不出的情况,目前已经解决,是因为a href中js函数接受的商品尺寸是需要带小数点的,而数据库当中存的商品尺寸没有带小数点,所以要么在数据库上加入小数点,要么把a href中js函数接受的改为没有小数点的 比如:

<a href="javascript:find_spcc('6.5')">6.5</a>&nbsp;&nbsp;

注意括号里的和括号外的数据必须和数据库当中的一模一样!!!!!!

总结

1.这些搜索的js函数实际上就是先取到输入的值,然后先把所有的都屏蔽掉(也就是display,none),然后把输入的那个值单独取出来(display ) 注意:158行中var的变量s在其他函数中,作为参数传入之后也是可用的

2.其实从数据库到前台页面数据的传送很多都在c.java当中完成,因为首页商品的那一些信息都是在<%=s_html_spxx %>当中的,从这行jsp指令获取的,而这条指令的数据又是从c.java的get_s_html_spxx获取

3.所以以后还是尽量把所有商品的信息都补全,建议全部写上,否则像今天这样,明明数据库中除了小米有商品尺寸,操作系统,商品品牌,其他的都没有,还好后来在浏览器f12控制台发现了商品的div的pp里没有数据,才最终锁定就是c.java当中没有从数据库取到数据,也就是原本数据库就没有操作系统,商品品牌,商品尺寸的数据