#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:
Несколько вещей
- Ваше значение не может быть <=90 И >= 100
- Нет необходимости возвращать предупреждение
- Вам нужно вызвать приглашение перед оценкой или переместить приглашение в функцию
- Запрос может возвращать пустую строку или что-то, что не является числом, поэтому проверьте, является ли это числом
Ваш код может быть написан
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()
Тем не менее,
- Вы уже должны использовать EventListeners
- Удобнее использовать текстовое содержимое некоторого элемента, чем оповещение
- Я также покажу вам троичный вместо
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 как о не связанном с вызовом. Я действительно ценю помощь!