Тест Javascript true или false ничего не выведет

#javascript #html #output #getelementbyid

#javascript #HTML #вывод #getelementbyid

Вопрос:

 function sub() {
  var num1 = parseInt(document.getElementById("imp").value);
  var yes = "Yup!"
  var no = "Nope..."
  if (imp == "true") {
    output(yes);
  } else if (imp == "false") {
    output(no)
  }
}
    
function output(x) {
  document.getElementById("result").innerHTML = x;
}  
 body {
  background:green;
  background-repeat: no-repeat;
  background-size: cover;
  font-family: 'Roboto', sans-serif !important;
}
h1 {
  text-align: center;
  color: #ffffff;
  font-size: 4em;
  text-shadow: 4px 4px #000000;
}

p {
  text-align: center;
  color: #ffffff;
  font-size: 4em;
  text-shadow: 4px 4px #000000;
}  
 <p>TRUE OR FALSE</p>
<p>Polar bears have black skin.</p>
<input type="text" id="imp">
<button onclick="sub()">Submit</button>
<div id="result"></div>  

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

1. imp == "true" не imp является ли HTMLInputElement элементом? Почему это вообще должно быть «true»? Вы имели в виду num1 ?

2. Боже мой… Я только что понял. Да, это то, что я имел в виду.

3. Вы должны узнать о том, как использовать отладчик — они позволяют быстро находить такие «простые» ошибки, и все время от времени их совершают. PS: Я не знаю, все ли это проблемы вашего кода, это было только первое, на чем я застрял.

Ответ №1:

Во-первых, кажется, вы хотели проверить значение num1 , а не imp (которого не существует в вашем коде, но это имя элемента, из которого вы получаете значение). Я просто изменил имя переменной userInput на, чтобы было более понятно, что вы получаете от пользователя.

Во-вторых, вы ожидаете либо «истинную», либо «ложную» строку от пользователя для проверки, но вы пытаетесь преобразовать ее в целое число. Удалите parseInt() . Вместо этого я добавил toLowerCase() в конце, чтобы предотвратить ошибку в сценарии, в котором пользователь использует любую заглавную букву («True», «False», «tRuE», «fAlSe» и т. Д.).

Наконец, я бы рекомендовал добавить заключительный else оператор в конец вашей условной проверки в качестве запасного варианта на случай, если пользователь не введет «true» или «false» (всегда защищайте свой пользовательский интерфейс от ошибок, если пользователь ввел что-то необычное или неожиданное).).

 function sub() {
  var userInput = document.getElementById("imp").value.toLowerCase();
  var yes = "Yup!";
  var no = "Nope...";
  var idk = "Invalid input";

  if (userInput == "true") {
    output(yes);
  } else if (userInput == "false") {
    output(no);
  } else {
    output(idk);
  }
}
    
function output(x) {
  document.getElementById("result").innerHTML = x;
}  
 body {
  background:green;
  background-repeat: no-repeat;
  background-size: cover;
  font-family: 'Roboto', sans-serif !important;
}
h1 {
  text-align: center;
  color: #ffffff;
  font-size: 4em;
  text-shadow: 4px 4px #000000;
}

p {
  text-align: center;
  color: #ffffff;
  font-size: 4em;
  text-shadow: 4px 4px #000000;
}  
 <p>TRUE OR FALSE</p>
<p>Polar bears have black skin.</p>
<input type="text" id="imp">
<button onclick="sub()">Submit</button>
<div id="result"></div>  

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

1. Спасибо! Я использовал некоторый код из скрипта калькулятора и, наверное, забыл кое-что изменить.