【问题标题】:javascript variables returning as undefinedjavascript 变量返回未定义
【发布时间】:2012-01-16 22:48:44
【问题描述】:

目前我正在使用一些 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_quantity 怎么可能是 1,然后在另一个控制台视图中未定义?

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

我认为问题源于这里,我的 JS 代码以该行开头。

var items = new Array(2);

现在我假设这会创建一个新数组,因为当我在它之后运行console.log(items) 时我得到[undefined, undefined]

additem 使用以下代码在点击链接时调用,

HTML

<a class='product' rel='"+category[i].product[j].price+"' href=''>"+ category[i].product[j].description + "</a>

JS

$('.product').live("click",function(e){
    additem($(this).text(), $(this).attr('rel'), 1);
e.preventDefault();
});

这是因为items[x] 始终为空或未定义而出现问题。我不知道为什么。

【问题讨论】:

  • 你必须提供一个测试用例,这样我们才能验证这个观察。 Item 是什么?你如何从控制台和“点击”调用additem()
  • @RobW 请看我的编辑
  • 这还不足以回答这个问题。我不知道您的“HTML”的上下文。你能用相关代码创建一个fiddle吗?另外,您在 JavaScript 控制台中使用的确切代码是什么?
  • jsfiddle.net/Udders/dg974 有 js fiddle,单击其中一个项目,它应该在底部创建一个带有数量输入的篮子并更新总成本,但它不这样做,我相信它是什么项目正在返回,或者项目是如何设置的。
  • 你的代码真是一团糟。您在绝对不需要的地方使用evalwith。此外,您以错误的方式使用 .append().append("&lt;TD&gt;") .append('&lt;P&gt;').append('&lt;/TD&gt;')不会导致 &lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;。经过这些观察,我没有费心去深入挖掘函数逻辑,因为代码本身已经存在缺陷。

标签: javascript console worldpay


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-05-03
    • 2023-01-11
    • 1970-01-01
    • 2014-12-05
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多