Изменить ответ ‘-1’, когда indexof не нашел совпадений

#javascript #html

#javascript #HTML

Вопрос:

Вот мой исходный код.Если функция indexof не нашла никакого результата, выведите -1.Я хотел бы его изменить.

 function searchForString() {
  var str = document.getElementById("string").value;
  document.getElementById("output").innerHTML = str;
  var input = document.getElementById("input");
  var button = document.getElementById("search");
  var output = document.getElementById("output");
  output.textContent = "Index of string ""   input.value   "": "   str.indexOf(input.value);
}    
 

Я попытался создать новую переменную, подобную этой, и попытался создать функцию if, но она не работает.

 var hiba = "hiba";
if (output == -1) {
  document.getElementById("output").innerHTML = hiba;
} else {
  output.textContent = "Index of string ""   input.value   "": "   str.indexOf(input.value);
}
 

Комментарии:

1. Похоже, вы перепутали свои переменные, с одной стороны, у вас есть output == -1 , а с другой стороны, вы используете output , чтобы быть элементом с идентификатором output ,.. Может быть, ввести другую переменную, возможно, называемую idx..

Ответ №1:

Вы проверяете output , равно ли -1 значение, когда вы хотите проверить, равен ли возвращаемый индекс indexOf -1 . Что-то вроде этого должно сработать.

 function searchForString() {
    var str = document.getElementById("string").value;
    var input = document.getElementById("input").value;
    var output = document.getElementById("output");
    output.innerHTML = str;
    var index = str.indexOf(input);
    if (index === -1) {
        output.textContent = "hiba";
    }
    else {
        output.textContent = "Index of string ""   input   "": "   index;
    }
}
 

Ответ №2:

Вы можете использовать тернарный оператор ( ? ), чтобы изменить его значение в зависимости от того, является ли оно -1 или нет. (Документы: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator )

 var str = document.getElementById("string").innerHTML;
var input = document.getElementById("input");
var button = document.getElementById("search");
var output = document.getElementById("output");
function searchForString() {
  output.textContent = str.indexOf(input.value) == -1 ? "String ""   input.value   "" not found" : "Index of string ""   input.value   "": "   str.indexOf(input.value); // if string == -1, say "String not found", otherwise say index of string
} 
 String: <span id="string">abcdefghijklmnopqrstuvwxyz</span><br />
<label for="input">Find this character: </label><input id="input" type="text"><br />
<button id="search" onclick="searchForString()">Search</button><br />
<div id="output"></div>