indexOf() 在错误的情况下显示“-1”
indexOf() Showing "-1" In Wrong Circumstance
我正在尝试使用 indexOf() 来检查一个字符串是否包含另一个字符串,如果是,它将触发不同的如果下面的语句是代码和记录的结果:
var str2="Handrail Ext";
if (fixing.toString().indexOf(str2) === -1 || fixingDig.toString().indexOf(str2) === -1) {
console.log("$FixingDig: " + fixingDig + " $Fixing: " + fixing + "InfexOf Result: " + fixing.toString().indexOf(str2) + ".");
$('.results #handrails').val(new_posts);
$('.wpcf7-form input[name=hidden-post-handrails]').val(new_posts);
} else {
console.log("$FixingDig: " + fixingDig + " $Fixing: " + fixing + "InfexOf Result: " + fixing.toString().indexOf(str2) + ".");
$('.results #handrails').val(0);
$('.wpcf7-form input[name=hidden-post-handrails]').val("0");
}
控制台日志
页面加载:
$FixingDig: No Fixing. $Fixing: No Fixing. IndexOf Result: -1.
选择修复:
$FixingDig: Bolt Down (610mm). $Fixing: No Fixing. IndexOf Result: -1.
选择扶手固定:
$FixingDig: Bolt Down (760mm + Handrail Ext.). $Fixing: No Fixing. IndexOf Result: -1.
检查使用 > -1
而不是 === -1
var str = "Handrail Ext";
var text1 = "bla and bla Handrail Ext bla"
var text2 = "bla and bla Handrail bla"
console.log(text1.indexOf(str))
console.log(text2.indexOf(str))
你的条件(fixing.toString().indexOf(str2) === -1 || fixingDig.toString().indexOf(str2) === -1)
是错误的。
当 fixing = "No Fixing."
和 FixingDig = "No Fixing."
时的情况
if ("No Fixing.".toString().indexOf("Handrail Ext") === -1 || ...)
// ^--------------------- True -------------------------^
// Since the condition is a OR, the remaining isn't evaluated
当 fixing = "Bolt Down (610mm)."
和 FixingDig = "No Fixing."
时的情况
if ("Bolt Down (610mm).".toString().indexOf("Handrail Ext") === -1 || ...)
// ^--------------------------True -----------------------------^
// Since the condition is a OR, the remaining isn't evaluated
当 fixing = "Bolt Down (760mm + Handrail Ext.)."
和 FixingDig = "No Fixing."
时的情况
if ("Bolt Down (760mm + Handrail Ext.).".toString().indexOf("Handrail Ext") === -1 || "No Fixing.".toString().indexOf("Handrail Ext") === -1)
// ^----------------------------------- False ----------------------------------^ ^---------------------- True ------------------------^
// Since the condition is a OR, the remaining IS evaluated. The right part is true, the whole condition is TRUE
将您的条件替换为:
if (fixing.toString().indexOf(str2) === -1 && fixingDig.toString().indexOf(str2) === -1)
// Notice this -----------------^^
自己试试
console.log("No Fixing No Fixing");
if ("No Fixing".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
console.log("not found");
} else {
console.log("found");
}
console.log("Bolt Down (610mm). No Fixing");
if ("Bolt Down (610mm).".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
console.log("not found");
} else {
console.log("found");
}
console.log("Bolt Down (760mm + Handrail Ext.). No Fixing");
if ("Bolt Down (760mm + Handrail Ext.).".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
console.log("not found");
} else {
console.log("found");
}
您可以使用 "includes" 而不是 "indexOf"。
我正在尝试使用 indexOf() 来检查一个字符串是否包含另一个字符串,如果是,它将触发不同的如果下面的语句是代码和记录的结果:
var str2="Handrail Ext";
if (fixing.toString().indexOf(str2) === -1 || fixingDig.toString().indexOf(str2) === -1) {
console.log("$FixingDig: " + fixingDig + " $Fixing: " + fixing + "InfexOf Result: " + fixing.toString().indexOf(str2) + ".");
$('.results #handrails').val(new_posts);
$('.wpcf7-form input[name=hidden-post-handrails]').val(new_posts);
} else {
console.log("$FixingDig: " + fixingDig + " $Fixing: " + fixing + "InfexOf Result: " + fixing.toString().indexOf(str2) + ".");
$('.results #handrails').val(0);
$('.wpcf7-form input[name=hidden-post-handrails]').val("0");
}
控制台日志
页面加载:
$FixingDig: No Fixing. $Fixing: No Fixing. IndexOf Result: -1.
选择修复:
$FixingDig: Bolt Down (610mm). $Fixing: No Fixing. IndexOf Result: -1.
选择扶手固定:
$FixingDig: Bolt Down (760mm + Handrail Ext.). $Fixing: No Fixing. IndexOf Result: -1.
检查使用 > -1
而不是 === -1
var str = "Handrail Ext";
var text1 = "bla and bla Handrail Ext bla"
var text2 = "bla and bla Handrail bla"
console.log(text1.indexOf(str))
console.log(text2.indexOf(str))
你的条件(fixing.toString().indexOf(str2) === -1 || fixingDig.toString().indexOf(str2) === -1)
是错误的。
当 fixing = "No Fixing."
和 FixingDig = "No Fixing."
if ("No Fixing.".toString().indexOf("Handrail Ext") === -1 || ...)
// ^--------------------- True -------------------------^
// Since the condition is a OR, the remaining isn't evaluated
当 fixing = "Bolt Down (610mm)."
和 FixingDig = "No Fixing."
if ("Bolt Down (610mm).".toString().indexOf("Handrail Ext") === -1 || ...)
// ^--------------------------True -----------------------------^
// Since the condition is a OR, the remaining isn't evaluated
当 fixing = "Bolt Down (760mm + Handrail Ext.)."
和 FixingDig = "No Fixing."
if ("Bolt Down (760mm + Handrail Ext.).".toString().indexOf("Handrail Ext") === -1 || "No Fixing.".toString().indexOf("Handrail Ext") === -1)
// ^----------------------------------- False ----------------------------------^ ^---------------------- True ------------------------^
// Since the condition is a OR, the remaining IS evaluated. The right part is true, the whole condition is TRUE
将您的条件替换为:
if (fixing.toString().indexOf(str2) === -1 && fixingDig.toString().indexOf(str2) === -1)
// Notice this -----------------^^
自己试试
console.log("No Fixing No Fixing");
if ("No Fixing".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
console.log("not found");
} else {
console.log("found");
}
console.log("Bolt Down (610mm). No Fixing");
if ("Bolt Down (610mm).".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
console.log("not found");
} else {
console.log("found");
}
console.log("Bolt Down (760mm + Handrail Ext.). No Fixing");
if ("Bolt Down (760mm + Handrail Ext.).".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
console.log("not found");
} else {
console.log("found");
}
您可以使用 "includes" 而不是 "indexOf"。