indexOf () Показывает "-1" в неправильных обстоятельствах - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь использовать 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");
  }

Console Log

Загрузка страницы:

$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.

Ответы [ 3 ]

1 голос
/ 22 марта 2019

Для проверки используйте > -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))
0 голосов
/ 22 марта 2019

Вы могли бы использовать «include» вместо «indexOf».

0 голосов
/ 22 марта 2019

Ваше состояние (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");
  }
...