我有一个函数,我正在尝试检查值是否已存在。然而,即使值存在,它仍然返回-1。我试图让我的if / else语句工作,如果一个项目存在它“警告”,如果它不运行addItem()函数;
$(".detail-view button").on("click", function () {
itemExists();
function itemExists() {
var detailID = $(this).attr('id');
var itemArr = [];
$("input#lunchorder_item_entry_id").each(function (index) {
var lunchItemID = $(this).val();
itemArr.push(lunchItemID);
});
addItem();
alert(jQuery.inArray(detailID, itemArr));
/*
if (jQuery.inArray(detailID, itemArr)) {
alert("You have already added this item. If you want to change item details, please remove the item and re-add it to your cart. Thank You!");
} else {
// the element is not in the array
addItem();
} */
console.log(itemArr);
}
答案 0 :(得分:1)
这是因为detailID
和itemArr
是函数itemExists()
的本地,undefined
条件是if
。
把它移到外面,应该修理它。
...
var detailID = $(this).attr('id');
var itemArr = [];
function itemExists() {
...
}
...
答案 1 :(得分:0)
然而即使存在值,它仍然会返回-1
我不知道如何证明,因为您没有提供任何样本输入。但是,在您拨打itemExists
的方式undefined
为window
/ $(this).attr('id')
时,undefined
可能会产生itemExists.call(this)
。
要解决此问题,请使用$(this)
或将DOM元素(甚至itemExists
?)存储在本地变量中并使用它,或者甚至将-1
移到处理程序之外并调用它有明确的论据。
如果项目存在,我正试图让我的if / else语句正常工作......
如您所见,返回的索引为true
。这意味着要检查一个元素是否包含在数组中,您需要将其与-1进行比较,而不是将每个非零数字转换为if (jQuery.inArray(detailID, itemArr) != -1)
:
{{1}}