返回为未定义的javascript变量

返回为未定义的javascript变量,javascript,console,worldpay,Javascript,Console,Worldpay,我现在正在使用一些javscript,它背后的基本思想过程是,你点击一个链接,链接产生并进入一个篮子,我当前在控制台中记录发送到篮子的内容。当我单击链接时,它会触发additem函数 function additem(desc,price,quantity) { var x = items.length - 1; var found = (x == 0); var y = new Item(desc,price,parseInt(quan

我现在正在使用一些javscript,它背后的基本思想过程是,你点击一个链接,链接产生并进入一个篮子,我当前在控制台中记录发送到篮子的内容。当我单击链接时,它会触发additem函数

function additem(desc,price,quantity)
    {

        var x = items.length - 1;
        var found = (x == 0);
        var y = new Item(desc,price,parseInt(quantity));
        console.log(y);
        var z = y;

        while((x != 0) && (found == false))
        {
            z = items[x];

            if(z != null)
            {
                if(z.M_desc == desc)
                {
                    found = true;
                }
                else
                {
                    x--;
                }
            }
            else
            {
                x--;
            }
        }

        if(found == false)
        {
            items[++numitems] = y;
        }
        else
        {
            items[x].M_quantity += quantity;
        }

        updatecart();
    }
我在控制台中看到的是:

Item { M_desc="Item 2", M_price="10", M_quantity=1}
但是,当我点击它时,我得到以下信息:

M_desc
    "Item 2"

M_price
    "10"

M_quantity
    undefined
M_数量如何可以是1,然后在另一个控制台视图中未定义

======编辑=====

我认为问题源于此,我的JS代码从这行代码开始

var items = new Array(2);
现在,我假设这会创建一个新数组,就像我在它之后直接运行console.logitems时得到[undefined,undefined]一样

单击链接时使用以下代码调用additem

HTML


当项目[x]始终为空或未定义时,就会出现问题。我不知道为什么

您的updatecart函数几乎同时被调用。items[i].M_quantity=$'input[name=qty]'。val是有问题的行。输入为空,正在用未定义的替换您的数量。

您必须提供一个测试用例,以便我们可以验证此观察结果。什么东西?如何从控制台调用additem并单击?@RobW请查看我的编辑,这仍然不足以回答问题。我不知道你的HTML的上下文。你能用相关的代码创建一个?另外,您在JavaScript控制台中使用的确切代码是什么?有js fiddle,点击其中一个项目,它应该在底部创建一个包含数量输入的篮子,并更新总成本,但是它没有这样做,我相信它会记录下返回的项目,或者项目的设置方式。你的代码真是一团糟。您使用的是eval,而且它绝对不需要。此外,您使用.append的方式不正确:.append.append'

'和.append将不会导致错误。在这些观察之后,我没有费心深入挖掘函数逻辑,因为代码本身已经有缺陷了。

<a class='product' rel='"+category[i].product[j].price+"' href=''>"+ category[i].product[j].description + "</a>
$('.product').live("click",function(e){
    additem($(this).text(), $(this).attr('rel'), 1);
e.preventDefault();
});