我有关于 else if 的问题 就我而言,最后一个其他不起作用
var pakeEach = $(".Thide").each(function () {
var cat = $(this).val();
if (cat.indexOf(PCatId) == -1) {
console.log("Pilih tidak ada di your aksess")
} else {
if (cat.indexOf(PCatId) != -1) {
console.log("Show only " + cat);
} else {
console.log("Remove");//why not working last else
}
}
});
最佳答案
从你的逻辑开始:
if (value == -1) {
...
} else {
if (value != -1) {
...
} else {
...
}
}
您可以将其简化为:
if (value == -1) {
...
} else if (value != -1) {
...
} else {
...
}
正如你所看到的,你说的是“如果值是-1那么...,否则如果值不是-1...”这涵盖了两种可能的情况:值只能是-1或不是-1 1(正如 A. Wolff 在评论中所讨论的)。
else 永远不会被命中,因为所有可能的分支都已经被覆盖了。
如果您想在其他分支之一(可能是找到该项目的分支)中包含删除逻辑,您应该使用类似以下内容的内容:
if (value === -1) {
console.log("Pilih tidak ada di your aksess")
} else {
console.log("Show only " + cat);
console.log("Remove!");
}
这是一种更简洁的书写方式。请注意,===
运算符通常优于 ==
,尤其是当您知道要比较相同类型的对象时。
因为您正在调用 indexOf
,所以唯一可能的结果是该项目位于集合中 (indexOf(foo) > -1
) 或不在集合中 (indexOf(foo) === -1
)。这里没有第三个选项,除非您关心它在集合中的位置。
例如,要删除该项目(如果它不是集合中的第一个项目),您可以使用:
if (value === -1) {
console.log("Pilih tidak ada di your aksess")
} else if (value === 0) {
console.log("Show only " + cat);
} else {
console.log("Remove!");
}
由于 if
条件仅匹配可能值的一小部分,因此在这种情况下实际上可以命中 else
。
关于javascript 逻辑 else 如果不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30036002/