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"。