首页 > 解决方案 > JS:函数未定义,无法创建 JSON 对象,因为 JS 无法识别键是字符串

问题描述

我有 JS 脚本函数,它保存购物车物品以订购食物。此函数通过 2 个参数 ID 和价格传递。

我的脚本文件看起来像

 <script>
    function addtocart(mitem, mprice) {
            var price = String(mprice)
            var mobj = { String(mitem): price }

            var storeobj = JSON.stringify(mobj)
            localStorage.setItem('cart', storeobj)
        }

    </script>

我的按钮看起来像这样

 <p style="position: absolute; bottom: 0px"><button class="button" style="width: 200px" onclick="addtocart( '{{M.Menu_Item}}', '{{M.Menu_ItemPrice}}' )" >Add to Cart</button>

当我在 chrome 中单击开发人员控制台中的按钮时,表示未定义 addtocart 功能。

我确实读过关于点击监听但我必须为每个按钮点击传递参数,这是不同的。我可能做错了什么?

标签: javascriptdjangodjango-templates

解决方案


您需要使用 [ ] 来设置 mobj。

var mobj = { [String(mitem)]: price };

基本上,Chrome 会抛出“Uncaught SyntaxError: Unexpected token :” at

var mobj = { String(mitem): price }  

这意味着由于语法错误,它无法识别您的 JS 代码。


推荐阅读