项目知识点汇总

该博客介绍了前端网页中实现商品属性分页、排序和筛选功能的JavaScript代码实现,包括页面链接参数的替换和添加方法,以及利用Fastjson进行数据转换。同时,展示了如何根据用户选择动态更新URL参数,并在页面加载时根据URL参数回显选项状态。
摘要由CSDN通过智能技术生成

1.谷粒商城

1.获取属性

1.分页

$(".page_a").click(function(){
    var pn = $(this).attr("pn");
    
    var href = location.href;
    if(href.indexOf("pageNum")!=-1){
        //替换pageNum的值
        location.href=replaceParamVal(href,pageNum,pn);
    }else{
        location.href=location.href+"&pageNum="+pn;
    }
    return false;
    
})

//替换
function replaceParamVal(url,paramName,replaceVal){
    val oUrl=url.toString();
    var re=eval('/('+paramName+'=)([^&]*)/gi');
    var nUrl=oUrl.replace(re,paramName+'='+replaceVal);
    return nUrl;
}

2.排序

//排序
$(".sort_a").click(function(
    //改变当前元素以及兄弟元素的样式
    changeStyle(this);
    //排序 sort=skuPrice_asc/desc
    var sort = $(this).attr("sort");
    sort = $(this).hasClass("desc")?sort+"_desc":sort+"_asc";
    replaceAndAddParamVal(location.href,"sort",sort);
    return false; //禁用默认行为,比如a标签跳转行为
)};

function changeStyle(ele){
    //1、其他未选中状态,兄弟
    $("sort_a").css({"color":"#333","border-color":"#CCC","background":"#FFF"}});
    $(".sort_a").each(function(){    //去掉兄弟的箭头
        var text = $(this).text().replace("↓","").replace("↑","");
        $(this).text(text);
    })
    
    //2、当前被点击的元素变为选中状态
    $(".sort_a").css({"color":"#FFF","border-color":"#e4393c","background":"#e4393c"})
    
    //3、改变升降序,升序:<a class="sort_a">销量</a>
    //              降序:<a class="sort_a desc">销量</a>
    $(ele).toggleClass("desc");//加上desc表示降序,不加升序
    //某个元素是否拥有desc样式
    if($(ele).hasClass("desc")){
        var text=$(ele).text().replace("↓","").replace("↑","");
        text=text+"↓";
        $(ele).text(text);//降序
    }else{
        var text=$(ele).text().replace("↓","").replace("↑","");
        text=text+"↑";
        $(ele).text(text);//升序
    }
}

改造替换方法

//替换和添加
function replaceAndAddParamVal(url,paramName,replaceVal){
    val oUrl=url.toString();
    //1、如果没有就添加,有就替换
    if(oUrl.indexOf(paramName)!=-1){
        var re=eval('/('+paramName+'=)([^&]*)/gi');
        var nUrl=oUrl.replace(re,paramName+'='+replaceVal);
        return nUrl;
    }else{
        var nUrl="";
        if(oUrl.indexOf("?")!=-1){
            nUrl = oUrl +"&"+paramName+ '=' + replaceVal;
        }else{
            nUrl = oUrl +"?"+paramName+ '=' + replaceVal;
        }
    }
    return nUrl;
}

3.选项框

$("#showHasStock").change(function(){
    if($(this).prop("chected")){
        //选中状态
        location.href = replaceAndAddParamVal(location.href,"hasStock",1);
    }else{
        //未选中
        var re=eval('/(hasStock=)([^&]*)/gi');
        location.href=(location.href+"").replace(re,"");
    }
    return false;
})
[[$strings.equals(param.hasStock,"1")]]
<!--从地址路径的值-->
<a href="#" th:width="chect=${param.hasStock}">
    <!--单选框回显-->
    <input id="showhasStock" type="checkbox" th:chected="${#strings.equals(chect,'1')}">
    仅显示有货
</a>

4.利用fastjson进行逆转


//利用fastjson进行逆转
public <T> getData(String key,TypeReference<T> typeReference){
    Object data = get(key);//默认是map
    String s = JSON.toJSONString(data);
    T t = JSON.parseObject(s,typeReference);
    return t;
}

5.导航参数取消

private String replaceQueryString(SearchParam param,String value,String key){
    String encode =null;
    try{
        encode = URLEncoder.encode(value,"UTF-8");
        //浏览器对空格编码和java不一样,浏览器将空格变为%20,java变为+
        encode = encode.replace("+","%20");
    }catch(UnsupportedEncodingException e){
        e.printStack();
    }
    return param.get_queryString().replace("&"+key+"="+encode,"");
}

品牌id是否为空,如果空不显示

<!--品牌-->
<div th:width="brandid=${param.barndId}" th:if="${#strings.isEmpty(brandid)}"></div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值