javascript新手,需要帮助添加项目名称到数组。它抛出错误Uncaught TypeError:无法读取属性' push'未定义的 在addToCart(navbar.js:32)。这是我连接字符串时的代码
<div class="productprice"><div class="pull-right"><a href="#" onclick ="addToCart('Cabernet Sauvignon, Year 2016');" class="btn btn-danger btn-sm my-1" role="button">BUY</a></div>
var finalOrder = new Array();
function addToCart(name){
this.finalOrder.push(name);
alert(finalOrder.toString());
}
编辑: 更改为此,随机经历但同样的错误再次发生 未捕获的TypeError:无法读取属性&#39; push&#39;在addToCart中未定义
var finalOrder = [];
function addToCart(name){
alert("random");
finalOrder.push(name);
alert(finalOrder.toString());
}
答案 0 :(得分:0)
this
仅指您调用它的函数的范围,而不是指定义finalOrder
数组的全局范围。通过删除this.
,您将正确引用该变量。
答案 1 :(得分:0)
试试这个
finalOrder= []
function addToCart(name){
finalOrder.push(name);
alert(finalOrder.toString());
}
答案 2 :(得分:0)
在javascript中,您只需使用var finalOrder = [];
指定数组。
但这里的错误是当前的范围。在函数中使用this
保留关键字时,它将引用函数作用域,在这种情况下是window
对象。
要让它运行,只需更改
即可...
function addToCart(name){
finalOrder.push(name);
alert(finalOrder.toString());
}
在最新版本的javascript中(你之前可能听说过ecmascript),你可以这样做:
...
const addToCart = name => ([ ...finalOrder, name ]);
如果你来自C#,它可能会有意义!