Javascript函数接受字符串并将其添加到数组,简单的网店

时间:2018-04-12 19:30:52

标签: javascript html

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());    
}

3 个答案:

答案 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#,它可能会有意义!