#javascript #indexof
#javascript #indexof
Вопрос:
Я пытаюсь использовать 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. Вы можете их видеть, str2 находится над кодом, а строка ввода отображается в логах консоли в вопросе.
2. Я этого не понимаю. Как вы думаете, где ошибка в журнале? Поскольку
$Fixing: No Fixing
не содержит"Handrail Ext"
, следовательно, индекс равен -1. Для меня журнал выглядит правильным. Чего я не понимаю?3. $ FixingDig: Болт вниз (760 мм поручень внутр.) включает поручень и все равно возвращает -1…
4. Где? Вы не регистрируете это. По крайней мере, я не вижу, где.
5. Я отобразил 3 сообщения журнала консоли и подчеркнул, в какой момент был отображен этот журнал, в нем очень четко написано «Выбор исправления с помощью поручня», затем отображается журнал исправления с выбранным поручнем. В любом случае, теперь это было решено.
Ответ №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))
Комментарии:
1. Сработало, высоко ценится. Могу принять в качестве ответа в ближайшее время.
Ответ №2:
Ваше условие (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 amp;amp; fixingDig.toString().indexOf(str2) === -1)
// Notice this -----------------^^
Попробуйте сами
console.log("No Fixing No Fixing");
if ("No Fixing".toString().indexOf("Handrail Ext") === -1 amp;amp; "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 amp;amp; "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 amp;amp; "No Fixing".toString().indexOf("Handrail Ext") === -1) {
console.log("not found");
} else {
console.log("found");
}
Ответ №3:
Вы могли бы использовать «включает» вместо «indexOf».
Комментарии:
1. Я считаю, что includes выдает ошибку объекта в IE, поскольку изначально она была includes, но мне пришлось изменить ее на indexOf
2. Не включает кроссбраузерность из-за IE