【发布时间】: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,单击其中一个项目,它应该在底部创建一个带有数量输入的篮子并更新总成本,但它不这样做,我相信它是什么项目正在返回,或者项目是如何设置的。
-
你的代码真是一团糟。您在绝对不需要的地方使用
eval和with。此外,您以错误的方式使用.append():.append("<TD>").append('<P>')和.append('</TD>')将不会导致<td><p></p></td>。经过这些观察,我没有费心去深入挖掘函数逻辑,因为代码本身已经存在缺陷。
标签: javascript console worldpay