Как вызвать функцию, содержащую If / Else, используя пользовательский ввод в JavaScript

#javascript #function #if-statement #user-input #alert

#javascript #функция #if-оператор #пользовательский ввод #предупреждение

Вопрос:

Как мне вложить оператор If / Else в функцию, а затем вызвать эту функцию, используя пользовательский ввод в теле, чтобы заставить функцию вычислить правильное оповещение с помощью JavaScript? Мне не хватает знаний о том, как вызвать оператор в теле, как кажется. Любая помощь будет оценена! 🙂

 <!doctype html>
<html>
<head>
    <title> JavaScript Playground </title>
    <script type="text/javascript">
        function grade(Grade){
            if (Grade <= 90 amp;amp; Grade >= 100) {
                return alert("You made an A!");
            } else {
                return alert("I don't know what you made!");
            }
        }
    </script>   
</head>
    <body>
        <script>
        var Grade = parseFloat(prompt("Please enter a number: "));</script>
    </body>
</html>
  

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

1. Просто поместите строку grade(Grade); после var Grade = ... строки? Вы вызываете функцию, записывая ее имя, за которым следует ввод (...) . Между круглыми скобками идут аргументы. developer.mozilla.org/en-US/docs/Web/JavaScript/Guide /…

2. Вау, спасибо, чувак! Я чувствую себя идиотом. Я ценю помощь и ссылку на руководство, которое вы мне прислали! Я новичок в разработке программного обеспечения, и я не знал, что существует целый документ для изучения JavaScript. Я очень ценю это!

3. Есть несколько отличных ресурсов для изучения JavaScript: developer.mozilla.org/en-US/docs/Web/JavaScript/Guide , eloquentjavascript.net , exploringjs.com/impatient-js/index.html

Ответ №1:

Несколько вещей

  1. Ваше значение не может быть <=90 И >= 100
  2. Нет необходимости возвращать предупреждение
  3. Вам нужно вызвать приглашение перед оценкой или переместить приглашение в функцию
  4. Запрос может возвращать пустую строку или что-то, что не является числом, поэтому проверьте, является ли это числом

Ваш код может быть написан

 function grade(){
  var Grade = prompt("Please enter a number: "); 
  Grade = isNaN(Grade) || Grade.trim()==="" ? 0 :  Grade; // force number if "Not a Number" or an empty string
  if (Grade >= 90 amp;amp; Grade <= 100) {
    alert("You made an A!");
  } else {
     alert("I don't know what you made!");
  }
}
grade()
  

Тем не менее,

  1. Вы уже должны использовать EventListeners
  2. Удобнее использовать текстовое содержимое некоторого элемента, чем оповещение
  3. Я также покажу вам троичный вместо if (a) text = "a"; else if (b) text = "b" конструкции

 <!doctype html>
<html>

<head>
  <title> JavaScript Playground </title>
  <script type="text/javascript">
    // helper function to make a number from whatever is entered
    const makeNum = str => isNaN(str) || str.trim() === "" ? 0 :  str; // convert to 0 if not a number
    
    function grade(Grade) {
      Grade = makeNum(Grade); // convert to number
      return Grade >= 90 amp;amp; Grade <= 100 ? "You made an A!" : "I don't know what you made!";
    }
    window.addEventListener("load",function() { // on page load
      document.getElementById("gradeMe").addEventListener("click",function() {
        document.getElementById("res").textContent = grade(document.getElementById('grade').value);
      })
    });
  </script>
</head>

<body>
  Please enter a number:
  <input type="text" id="grade">
  <input type="button" id="gradeMe" value="grade me" />
  <span id="res"></span>
</body>

</html>  

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

1. Вы также можете добавить, что функция prompt() возвращает одну из трех вещей: (1) строку, (2) пустую строку, если пользователь ничего не вводит и просто нажимает OK или (3) null, если пользователь нажимает Cancel . Любая возвращаемая строка может быть или не быть числом. Таким образом, коду также необходимо будет проверять наличие нечисловых ответов, пустых строк или нулей.

2. Мы еще не изучили прослушиватели событий и даже не просматривали их в классе. Мы делаем 2 страницы, одну для if / else и одну для операторов Switch. Мне нужно посмотреть прослушиватели событий и посмотреть, как они используются. Я ценю обратную связь! Я пойду искать их сейчас! 🙂 Кроме того, мне нравится, как вы ее переписали, она выглядит намного плавнее и работает лучше!

3. @mrperservaя просто хотел дать вам несколько лучших кодов. Первый пример, который я привел, пока в порядке — я добавил для вас некоторую проверку ввода

Ответ №2:

Строка непосредственно после

 var Grade = parseFloat(prompt("Please enter a number: "));
  

Вы можете вызвать свою функцию следующим образом grade(Grade);

If / else совершенно не связано с тем, как вы вызываете функцию, но я думаю, что условие внутри вашего оператора if перепутано. Я предполагаю, что вы, вероятно, имели в виду, что это будет Grade >= 90 amp;amp; Grade <= 100 , а не Grade <= 90 amp;amp; Grade >= 100 .

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

1. Да! <= был ошибкой и совершенно случайным. Я ценю пошаговое руководство о том, как думать о if / else как о не связанном с вызовом. Я действительно ценю помощь!