javascript - Push() 在 JavaScript 中不起作用

标签 javascript local-storage

问题:Uncaught TypeError: Object #<Object> has no method 'push'在控制台中。

http://jsfiddle.net中的代码

最佳答案

更改存储项目 id(Cart) 并重试,看起来之前在“购物车”下存储的项目 id 不是 @dc5 在评论部分建议的 json 数组

UPD:试试这个 http://jsfiddle.net/vJkBQ/4/

HTML

<div id='cart'></div>
<input type="button" id="add" value="Add To Cart item 1" />
<input type="button" id="add2" value="Add To Cart item 2" />

Javascript

//TODO: move from globals
var storageName = 'myCART';

$(document).ready(function () {
    var item = {
        DepartmentID :333,
        CategoryID:117,
        BrandID:19,
        BrandImage:"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
        BrandName:"General",
        ID:711
    };
    var item2 = {
        DepartmentID :123,
        CategoryID:321,
        BrandID:18,
        BrandImage:"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
        BrandName:"Common",
        ID:712
    };

    localStorage.clear(storageName);
    $('#add').click(function(){
       addToCart(item);
    });

    $('#add2').click(function(){
       addToCart(item2);
    });
});

function addToCart(item){
    //by @slebetman   
    var items = JSON.parse(localStorage.getItem(storageName));
    if (! (items instanceof Array) ) {
        items = [];
    }

    var itemIndex = getItemIndexById(items, item.ID);    
    if(typeof(itemIndex) === 'number'){
        items[itemIndex].quantity++;
    }
    else{
        item.quantity = 1;
        items.push(item);
    }

    localStorage.setItem(storageName, JSON.stringify(items));
    console.log(localStorage.getItem(storageName));
}

//find search item index
function getItemIndexById(items, id){
    for(var i = 0; i < items.length; i++){
        if(items[i].ID == id){
            return i;
        }
    }

    return false;
}

关于javascript - Push() 在 JavaScript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606256/

相关文章:

javascript - 转义 JavaScript 字符串

javascript - 理解的递归偶数函数问题(Javascript)

PHP & 本地存储;

javascript - 具有 promise 和本地存储的 Angular JS 日志记录数据

javascript - 使用 jQuery 从输入值设置本地存储键

javascript - 如何在脚本中通过document.getElementById获取数据

javascript - 将日期(UTC 格式)转换为另一个时区的日期(支持 DST)

javascript - 而是将 index.js 的 require 更改为在所有 CommonJS 模块中都可用的动态 import()

reactjs - React router <Redirect> 未在状态下重定向

android - 本地存储 API 在 NativeScript WebView 中不起作用