Проверка ошибок при вводе пользователем - PullRequest
0 голосов
/ 07 июня 2018

У меня проблемы с проверкой ошибок на работу, проверяя вводимые пользователем данные.Это работало нормально, пока я не попытался добавить проверку ошибок, потому что диапазон должен быть 1-10.Я знаю, что мог бы установить поле ввода в HTML для этого диапазона, но для этого назначения мы должны использовать сообщение об ошибке, если оно выходит за пределы этого диапазона.Я просто ищу помощи, чтобы понять, где я ошибся здесь.Спасибо!

Вот моя кодировка:

function OddNumber() {
  var x = parseFloat(document.getElementById('input').value);
  try {
    if (x < 1 || x > 10)
  } //less than 1 or greater than 10 creates an error (in theory)
  catch (err) {
    document.getElementById("output").innerHTML = err.name;
  } else {
    for (var i = 1; i <= x; i++) { //gets input from user and loops to find odd numbers between 1 and that number
      if (i % 2 != 0) {
        document.getElementById("output").innerHTML = (i + " ");
      }
    }
  }
<h1>Odd Number Generator</h1>

<p>Enter a number between 1 and 10, then click "Submit" to get the odd numbers between 1 and the number you entered.</p>

<p>Number: <input type="number" id="input" name="input"></p>
<p><button onclick="OddNumber()">Submit</button>
  <p id="output"></p>

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Просто проверка if(x < 1 || x > 10) не выдает ошибку.Вам нужно будет throw new Error() в if, если вам нужно использовать блок catch для вашего задания.Хотя на самом деле это вообще не нужно.

Также я думаю, что вы хотите использовать оператор += для innerHTML.

function OddNumber () {
    var x = parseFloat(document.getElementById('input').value);
    if(x < 1 || x > 10){
          
      document.getElementById("output").innerHTML = "invalid number";  
    } //less than 1 or greater than 10 report error
    else {
        for (var i = 1; i <= x; i++) { //gets input from user and loops to find odd numbers between 1 and that number
          if (i % 2 != 0) {
           document.getElementById("output").innerHTML += (i + " ");
          }
        }
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Odd Number Generator</title>
<meta Charset="utf-8">
</head>
<h1>Odd Number Generator</h1>

<body>



<p>Enter a number between 1 and 10, then click  "Submit" to get the odd numbers between 1 and the number you entered.</p>


  <p>Number: <input type="number" id="input" name="input"></p>
  <p><button onclick="OddNumber()">Submit</button>
  <p id="output"></p>





</body>
</html>
0 голосов
/ 07 июня 2018

Ваша проблема с:

if(x < 1 || x > 10) } //less than 1 or greater than 10 creates an error (in theory)
    catch(err) {

В операторе if нет ничего после него, что было бы легче увидеть, если бы скобки были выровнены правильно.И вам не нужно try / catch для такого рода проверки ошибок.

<script>
function OddNumber () {
    var x = parseFloat(document.getElementById('input').value);
    if(x < 1 || x > 10) { //less than 1 or greater than 10 creates an error (in theory)
        document.getElementById("output").innerHTML = "Your error string";
    } else {
        for (var i = 1; i <= x; i++) { //gets input from user and loops to find odd numbers between 1 and that number
            if (i % 2 != 0) {
                document.getElementById("output").innerHTML = (i + " ");
            }
        }
    }
}
</script>
...