我试图使用indexOf()来检查字符串是否包含另一个字符串,如果是这样,它将触发不同的if语句,下面是代码和记录的结果:
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”。