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

JavaScript開發(fā)購物車之相關(guān)DOM操作(三)

本節(jié)主要對購物車中各種操作進行了封裝,例如商品個數(shù)統(tǒng)計,更新獲取本地資料等操作,方便程式碼管理。

首先,根據(jù)id查看查看本地數(shù)據(jù)中是否含有指定的物件(商品)

其次,透過陣列物件更新本地數(shù)據(jù),取得商品的總數(shù)量

最後,根據(jù)商品標識更新本地數(shù)據(jù),再取得本地數(shù)據(jù)。

<script>
 /*
 功能:查看本地數(shù)據(jù)中是否含有指定的對象(商品),根據(jù)id
 參數(shù):id:商品的標識
 */
function checkObjByPid(id) {
    var jsonStr = cookieObj.get("datas");
    var jsonObj = JSON.parse(jsonStr);
    //parse() 方法可解析一個日期時間字符串,并返回 1970/1/1 午夜距離該日期時間的毫秒數(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;
}

/*
 功能:更新本地數(shù)據(jù)
 參數(shù):arr    數(shù)組對象
 返回一個值:最新的本地轉(zhuǎn)換后的數(shù)組對象
 * */
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ù)組,獲取每一個對象中的pCount值相加總和*/
    var totalCount = 0; //默認為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;
}

/*
 更新本地數(shù)據(jù)根據(jù)pid
 id:商品的標識
 */
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)
}

/*
 獲取本地數(shù)據(jù)
 返回 數(shù)組對象
 * */
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ù)組中添加/刪除項目,然后返回被刪除的項目。
            break;
        }
    }
    updateData(lisObj);
    return lisObj;
}
</script>

註解:

JSON.stringify

#將 JavaScript 值轉(zhuǎn)換為 JavaScript 物件表示法 (Json) 字串。

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

value:是必選欄位。就是你輸入的對象,例如數(shù)組,類別等。?replacer:這個是可選的。它又分為2種方式,一種是數(shù)組,第二種是方法。?

  情況一:replacer為數(shù)組時,透過後面的實驗可以知道,它是和第一個參數(shù)value有關(guān)係的。一般來說,系列化後的結(jié)果是透過鍵值對來進行表示的。?所以,如果此時第二個參數(shù)的值在第一個存在,那麼就以第二個參數(shù)的值做key,第一個參數(shù)的值為value進行表示,如果不存在,就忽略。

  情況二:replacer為方法時,那很簡單,就是說把系列化後的每一個物件(記住是每一個)傳進方法裡面處理。?

space:就是用什麼來做分隔符號的。?

  1)如果省略的話,那麼顯示出來的值就沒有分隔符,直接輸出來 。
  2)如果是一個數(shù)字的話,那麼它就定義縮進幾個字符,當(dāng)然如果大於10 ,則預(yù)設(shè)為10,因為最大值為10。
  3)如果是一些轉(zhuǎn)義字符,例如“\t”,表示回車,那麼它每行一個回車。?
  4)如果只是字串,就在每行輸出值的時候把這些字串附加上去。當(dāng)然,最大長度也是10個字元。?


建立一個server.js檔案把上面??的JavaScript程式碼放入其中。

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

以後從HTML頁面調(diào)用,實作功能模組效果。

繼續(xù)學(xué)習(xí)
||
<script> /* 功能:查看本地數(shù)據(jù)中是否含有指定的對象(商品),根據(jù)id 參數(shù):id:商品的標識 */ function checkObjByPid(id) { var jsonStr = cookieObj.get("datas"); var jsonObj = JSON.parse(jsonStr); //parse() 方法可解析一個日期時間字符串,并返回 1970/1/1 午夜距離該日期時間的毫秒數(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; } /* 功能:更新本地數(shù)據(jù) 參數(shù):arr 數(shù)組對象 返回一個值:最新的本地轉(zhuǎn)換后的數(shù)組對象 * */ 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ù)組,獲取每一個對象中的pCount值相加總和*/ var totalCount = 0; //默認為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; } /* 更新本地數(shù)據(jù)根據(jù)pid id:商品的標識 */ 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) } /* 獲取本地數(shù)據(jù) 返回 數(shù)組對象 * */ 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ù)組中添加/刪除項目,然后返回被刪除的項目。 break; } } updateData(lisObj); return lisObj; } </script>