javascript - 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 功能。
我确实读过关于点击监听但我必须为每个按钮点击传递参数,这是不同的。我可能做错了什么?
解决方案
您需要使用 [ ] 来设置 mobj。
var mobj = { [String(mitem)]: price };
基本上,Chrome 会抛出“Uncaught SyntaxError: Unexpected token :” at
var mobj = { String(mitem): price }
这意味着由于语法错误,它无法识别您的 JS 代码。
推荐阅读
- php - 传递参数,评估传递了什么
- vue.js - 未知的自定义元素:
- 您是否正确注册了组件? - r - 使随机相关矩阵半定正
- java - 你能让 assertTrue 错误信息更具体吗?
- ios - 如何让 viewController 填满我的整个 containerView?
- java - 防止在 JUnit 4.x 中使用 Hamcrest
- azure - Azure 通知中心:集线器之间的安装 ID 是唯一的吗?
- c# - 在特定字符串的最后一个实例之后提取文本块
- firebase - 尝试在 Flutter 项目上添加 Firebase 时遇到错误
- tensorflow2.0 - 完成 GeneratorDataset 迭代器时发生错误:已取消:操作已取消