Популярные вопросы начинающих!

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
3 992
Два аккаунта больного изолированы!
 
Регистрация
24.06.2020
Сообщения
24
Подскажите, пожалуйста, а почему этот код всегда выводит вариант default? Разве в нём есть ошибка? Спасибо за ответ?
JavaScript:
<!doctype html>

<html lang="ru" >

<head>

<meta charset="utf-8">

<title>вот так штука</title>
</head>

<body>
<script>
"use strict";

let a = prompt("Сколько будет 2+5?");

switch (a) {
  case 6:
    alert( 'Вы ошиблись. 2+5=7' );
    break;
  case 7:
    alert( 'Всё верно!' );
    break;
  case 8:
    alert( 'Вы ошиблись. 2+5=7' );
    break;
  default:
    alert( "Вы очень сильно ошиблись, будьте внимательнее. Возможно вы не умеете считать или вы робот. 2+5=7" );
}

</script>
</body>
 

Volly

Well-Known Member
Регистрация
21.03.2012
Сообщения
745
Может потому, что prompt возвращает строку, а для case заданы числа и ответ получается правильный: число не равно строке - значит ответ из default.
Или преобразуйте переменную "а" в число, или числа в case преобразуйте в строки.
 

Max737

Active Member
Регистрация
20.10.2020
Сообщения
25
Что по статейникам сейчас на конец 2020 года? Продолжают умирать?
 
Регистрация
24.06.2020
Сообщения
24
Подскажите а как сделать так, что бы этот код работал?
JavaScript:
<!doctype html>
 
<html lang="ru" >

<head>

<meta charset="utf-8">

<title>название</title>
</head>

<body>
<script>
"use strict";

let year = prompt('Введите математическое действие.', '');
let yea = prompt('Введите 1 число для калькуляции.', '');
let ye = prompt('Введите 2 число для калькуляции.', '');
   if (year == "минус") alert(  yea-ye );
   if (year == "плюс") alert(  yea+ye );
   if (year == "делить") alert(  yea/ye );
   if (year == "умножить") alert(  yea*ye );

</script>
</body>
Я захотел написать маленький калькулятор. Функции "минус", "делить" и "умножить" работают хорошо. А вот "плюс" нет. Видимо он не работает из за того, что вместо унарного плюса применяется бинарный, и как и положено складывает две строки. А как преобразовать эти строки в числа? Или этот код вообще принципиально не будет правильно работать?
Спасибо за ответ.
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
3 992
1605008493879.png

Не совсем понимаю в чём проблема. Но по идее должно помочь, если все значения будешь переводить в числа через Number, Float, parseInt, toFixed и так далее. Зависит от того - нужны десятичные или только целые.
Подробная статья Для просмотра ссылки необходимо: Войти или Регистрация, пересказывать не имеет смысла.
 

Volly

Well-Known Member
Регистрация
21.03.2012
Сообщения
745
Видимо он не работает из за того...
Обработчик js может сам преобразовывать значения к нужному (в его пониманию) типу. Из полей форм и js-окон всегда приходят строки. Знаки минус, умножить и разделить применимы только к числам и поэтому скрипт сам догадывается преобразовать значения из строк в числа. Плюс применим и к числам, и к строкам, а поскольку значения из prompt - строки, то преобразовать их в числа js не догадывается.
Почитайте в поиске "преобразование типов js".
 
Регистрация
24.06.2020
Сообщения
24
Спасибо! Сделал вот так и заработало.
JavaScript:
if (year == "плюс") alert(  +yea + +ye );
 
Верх Низ