我有以下代码:
function checkIfUnitCostItemsAreZero(finaliseIDList)
{
var selectedItems = finaliseIDList;
selectedItems = $.makeArray(selectedItems); //array is ["-2,-3"]
var getItem = $("#builderItemsList .listItem");
for (i = 0; i < getItem.length; i++)
{
var currentItem = ($(getItem[i]).attr("key"));
if (currentItem.indexOf(selectedItems) > -1)
{//currentItem = "-2" then "-3"
var unitCost = $(getItem[i]).attr("unitcost");
console.log(unitCost);
unitCost = parseFloat(unitCost);
if(unitCost==0.00)
{
return true;
break;
}
}
}
return false;
}
所选项目目前等同于以下内容:
selectedItems = ["-2,-3"]
进一步说,currentItem在以下位置进行评估:
"-2"
,以及下一个循环"-3"
。
在这两种情况下,都不会进入if
声明。有什么想法吗?
答案 0 :(得分:0)
由Hossein和Aer0提供,使用以下内容修复: - 作为单个值传入的字符串。使用split将其分隔为数组。 - 修改if子句。
function checkIfUnitCostItemsAreZero(finaliseIDList)
{
var selectedItems = $.makeArray(finaliseIDList.split(','));
var getItem = $("#builderItemsList .listItem");
for (i = 0; i < getItem.length; i++) {
var currentItem = ($(getItem[i]).attr("key"));
if (selectedItems.indexOf(currentItem) > -1)
{
var unitCost = $(getItem[i]).attr("unitcost");
unitCost = parseFloat(unitCost);
if(unitCost==0.00)
{
return true;
break;
}
}
}
return false;
}
PS为什么在解决方案有效的情况下进行投票:/如果你打算至少使用答案或评论进行投票。