亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

JavaScript開(kāi)發(fā)購(gòu)物車之相關(guān)DOM操作(三)

本節(jié)主要對(duì)購(gòu)物車中各種操作進(jìn)行了封裝,比如商品個(gè)數(shù)統(tǒng)計(jì),更新獲取本地?cái)?shù)據(jù)等操作,方便代碼管理。

首先,根據(jù)id查看查看本地?cái)?shù)據(jù)中是否含有指定的對(duì)象(商品)

其次,通過(guò)數(shù)組對(duì)象更新本地?cái)?shù)據(jù),獲取商品的總數(shù)量

最后,根據(jù)商品標(biāo)識(shí)更新本地?cái)?shù)據(jù),再獲取本地?cái)?shù)據(jù)。

<script>
 /*
 功能:查看本地?cái)?shù)據(jù)中是否含有指定的對(duì)象(商品),根據(jù)id
 參數(shù):id:商品的標(biāo)識(shí)
 */
function checkObjByPid(id) {
    var jsonStr = cookieObj.get("datas");
    var jsonObj = JSON.parse(jsonStr);
    //parse() 方法可解析一個(gè)日期時(shí)間字符串,并返回 1970/1/1 午夜距離該日期時(shí)間的毫秒數(shù)。
    var isExist = false;
    for(var i = 0, len = jsonObj.length; i < len; i++) {
        if(jsonObj[i].pid == id) {
            isExist = true;
            break;
        }
    }
    return isExist; //return false;
}

/*
 功能:更新本地?cái)?shù)據(jù)
 參數(shù):arr    數(shù)組對(duì)象
 返回一個(gè)值:最新的本地轉(zhuǎn)換后的數(shù)組對(duì)象
 * */
function updateData(arr) {
    var jsonStr = JSON.stringify(arr);
    cookieObj.set({
        name: "datas",
        value: jsonStr
    });
    jsonStr = cookieObj.get("datas");
    return JSON.parse(jsonStr);
}

/*
 獲取商品的總數(shù)量
 返回:數(shù)字
 */
function getTotalCount() {
    /*循環(huán)遍歷數(shù)組,獲取每一個(gè)對(duì)象中的pCount值相加總和*/
    var totalCount = 0; //默認(rèn)為0
    var jsonStr = cookieObj.get("datas");
    var listObj = JSON.parse(jsonStr);
    for(var i = 0, len = listObj.length; i < len; i++) {
        totalCount = listObj[i].pCount + totalCount;
    }
    return totalCount;
}

/*
 更新本地?cái)?shù)據(jù)根據(jù)pid
 id:商品的標(biāo)識(shí)
 */
function updateObjById(id, num) {
    var jsonStr = cookieObj.get("datas");
    var listObj = JSON.parse(jsonStr);
    for(var i = 0, len = listObj.length; i < len; i++) {
        if(listObj[i].pid == id) {
            listObj[i].pCount = listObj[i].pCount + num;
            break;
        }
    }
    return updateData(listObj)
}

/*
 獲取本地?cái)?shù)據(jù)
 返回 數(shù)組對(duì)象
 * */
function getAllData() {
    var jsonStr = cookieObj.get("datas");
    var listObj = JSON.parse(jsonStr);
    return listObj;
}

function deleteObjByPid(id) {
    var lisObj = getAllData();
    for(var i = 0, len = lisObj.length; i < len; i++) {
        if(lisObj[i].pid == id) {
            lisObj.splice(i, 1); //splice() 方法向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目。
            break;
        }
    }
    updateData(lisObj);
    return lisObj;
}
</script>

注釋:

JSON.stringify

將 JavaScript 值轉(zhuǎn)換為 JavaScript 對(duì)象表示法 (Json) 字符串。

語(yǔ)法:JSON.stringify(value [, replacer] [, space]) 

value:是必選字段。就是你輸入的對(duì)象,比如數(shù)組,類等。 replacer:這個(gè)是可選的。它又分為2種方式,一種是數(shù)組,第二種是方法。 

  情況一:replacer為數(shù)組時(shí),通過(guò)后面的實(shí)驗(yàn)可以知道,它是和第一個(gè)參數(shù)value有關(guān)系的。一般來(lái)說(shuō),系列化后的結(jié)果是通過(guò)鍵值對(duì)來(lái)進(jìn)行表示的。 所以,如果此時(shí)第二個(gè)參數(shù)的值在第一個(gè)存在,那么就以第二個(gè)參數(shù)的值做key,第一個(gè)參數(shù)的值為value進(jìn)行表示,如果不存在,就忽略。

  情況二:replacer為方法時(shí),那很簡(jiǎn)單,就是說(shuō)把系列化后的每一個(gè)對(duì)象(記住是每一個(gè))傳進(jìn)方法里面進(jìn)行處理。 

space:就是用什么來(lái)做分隔符的。 

  1)如果省略的話,那么顯示出來(lái)的值就沒(méi)有分隔符,直接輸出來(lái) 。
  2)如果是一個(gè)數(shù)字的話,那么它就定義縮進(jìn)幾個(gè)字符,當(dāng)然如果大于10 ,則默認(rèn)為10,因?yàn)樽畲笾禐?0。
  3)如果是一些轉(zhuǎn)義字符,比如“\t”,表示回車,那么它每行一個(gè)回車。 
  4)如果僅僅是字符串,就在每行輸出值的時(shí)候把這些字符串附加上去。當(dāng)然,最大長(zhǎng)度也是10個(gè)字符。 


創(chuàng)建一個(gè)server.js文件把上面的JavaScript代碼放入其中。

<script type="text/javascript" src="server.js"></script>

以后從HTML頁(yè)面調(diào)用,實(shí)現(xiàn)功能模塊效果。

Weiter lernen
||
<script> /* 功能:查看本地?cái)?shù)據(jù)中是否含有指定的對(duì)象(商品),根據(jù)id 參數(shù):id:商品的標(biāo)識(shí) */ function checkObjByPid(id) { var jsonStr = cookieObj.get("datas"); var jsonObj = JSON.parse(jsonStr); //parse() 方法可解析一個(gè)日期時(shí)間字符串,并返回 1970/1/1 午夜距離該日期時(shí)間的毫秒數(shù)。 var isExist = false; for(var i = 0, len = jsonObj.length; i < len; i++) { if(jsonObj[i].pid == id) { isExist = true; break; } } return isExist; //return false; } /* 功能:更新本地?cái)?shù)據(jù) 參數(shù):arr 數(shù)組對(duì)象 返回一個(gè)值:最新的本地轉(zhuǎn)換后的數(shù)組對(duì)象 * */ function updateData(arr) { var jsonStr = JSON.stringify(arr); cookieObj.set({ name: "datas", value: jsonStr }); jsonStr = cookieObj.get("datas"); return JSON.parse(jsonStr); } /* 獲取商品的總數(shù)量 返回:數(shù)字 */ function getTotalCount() { /*循環(huán)遍歷數(shù)組,獲取每一個(gè)對(duì)象中的pCount值相加總和*/ var totalCount = 0; //默認(rèn)為0 var jsonStr = cookieObj.get("datas"); var listObj = JSON.parse(jsonStr); for(var i = 0, len = listObj.length; i < len; i++) { totalCount = listObj[i].pCount + totalCount; } return totalCount; } /* 更新本地?cái)?shù)據(jù)根據(jù)pid id:商品的標(biāo)識(shí) */ function updateObjById(id, num) { var jsonStr = cookieObj.get("datas"); var listObj = JSON.parse(jsonStr); for(var i = 0, len = listObj.length; i < len; i++) { if(listObj[i].pid == id) { listObj[i].pCount = listObj[i].pCount + num; break; } } return updateData(listObj) } /* 獲取本地?cái)?shù)據(jù) 返回 數(shù)組對(duì)象 * */ function getAllData() { var jsonStr = cookieObj.get("datas"); var listObj = JSON.parse(jsonStr); return listObj; } function deleteObjByPid(id) { var lisObj = getAllData(); for(var i = 0, len = lisObj.length; i < len; i++) { if(lisObj[i].pid == id) { lisObj.splice(i, 1); //splice() 方法向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目。 break; } } updateData(lisObj); return lisObj; } </script>
einreichenCode zurücksetzen