gpt4 book ai didi

javascript - 为什么 JS 在某行之后停止处理我的代码?

转载 作者:行者123 更新时间:2023-11-29 20:15:57 25 4
gpt4 key购买 nike

好吧,我已经为这个问题烦恼了一天多了。而且我相信解决起来非常简单。

下面的函数应该这样做:从 php 文件(返回 xml 格式)获取一些发布数据,成功处理该数据以检查购物车中的项目是否已经与该项目一起存在,以防止它被以相同的名称添加了两次。因此它循环遍历当前项目列表并找到匹配项。如果找不到,它会添加该项目就好了。如果存在,则需要进行操作以使用新金额更新该行。

由于某些奇怪的原因,我无法让代码在匹配时立即执行。 if(match == true) 什么都不做,即使 console.log("index found present status: "+match); 返回 true 在控制台中的几行就可以了。

这怎么可能呢?是否与范围有关?

if(basket.fnGetData().length == 1) addToCart('window', 1); 只是为了确保函数的第二次调用有重复项需要“合并”为一个。节省了我每次点击网站上的内容的时间。

    function addToCart (ueid, amount)
{
// you can remove the follow alert() call, typically this function would
// scroll (through an #anchor or maybe tween/scroll with jQuery) down to
// the area below the panorama tour and there display the user-interface
// for buying/sponsoring items

console.log("buy "+ueid+" "+amount+" times");
var match = false;

console.log("before ajax present status: "+match); //output: false

//Get detailed info about this item
iteminfo = jQuery.ajax(iteminfourl, { data: { "ueid": ueid }, type: "POST",
success:
function(data)
{
console.log("ajax success present status: "+match); //output: false
totalprice = (amount * $(data).find('price').text());

//first check if the item already exists in the table
currentContents = basket.fnGetData();

if(currentContents.length > 0)
{
for(index = 0; index <= currentContents.length; index++)
{
if(currentContents[index][0] == ueid)
{
console.log("ueid and index are the same");

match = true;
var updateIndex = index;
console.log("index found present status: "+match); //output: true
}
}
}

if(match == true)
{
//this never gets executed, even if match is set to true.
//also console.logs just before the if statement are only
//executed when match = false all the way...
console.log("item is present, update index "+updateIndex);
//basket.fnUpdate()
}
else
{
basket.fnAddData(
[
ueid,
amount,
totalprice,
'X'
]
);

if(basket.fnGetData().length == 1)
addToCart('window', 1);
}
}
});
}

最佳答案

for(index = 0; index <= currentContents.length; index++)

应该是

for(var index = 0; index < currentContents.length; index++)

正在使用的 key <而不是 <=在循环表达式中。我认为您的循环正在运行额外的时间并在您执行 currentContents[1 too many][0] 时抛出 TypeError .查看调试控制台以获取打印出的错误警告。

关于javascript - 为什么 JS 在某行之后停止处理我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6724065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com