Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.11.2022, 19:41
Новичок на форуме
Отправить личное сообщение для Izumkin Посмотреть профиль Найти все сообщения от Izumkin
 
Регистрация: 06.11.2022
Сообщений: 3

При сравнении с 0 (в prompt) как прервать по Esc?
Доброго времени!
Я совсем нуб, начинаю изучать, потому прошу прощения заранее.
Задача: вывод натуральных чисел.
Введенное пользователем в prompt сравнивается с 0, чтобы указать, если введено ненатуральное число. Но если стоит '<= 0', то и на нажатие Esc выводит сообщение про ненатуральное число. Как сделать, чтобы при вводе 0 выдавалось сообщение, а при нажатии Esc - прерывалась работа?

function askCh() {
  let n = +prompt('Chislo', '');
    if (n <= 0) showUnNatural(n)
    else showPrimes(n);
}
function showUnNatural(n) {
  alert(`Число (${n}) не натуральное. Введите натуральное число!`);
  askCh();
}
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2022, 20:30
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

promt возвращает строку.
При нажатии esc строка будет пустая.
Ну, а если ввели 0, то строка будет '0'
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2022, 21:27
Новичок на форуме
Отправить личное сообщение для Izumkin Посмотреть профиль Найти все сообщения от Izumkin
 
Регистрация: 06.11.2022
Сообщений: 3

Если в условии n<=0, то при вводе 0 - сообщение "Число (0) не натуральное...", а при Esc - "Число (null) не натуральное...".
При n<0, что ввод 0, что Esc просто прерывают работу кода, если это можно так назвать.
А как сделать, чтобы при вводе 0 - выдавало сообщение, а при Esc - прерывалась работа?
Работает только так
if (n === null);
      else if (n <= 0) showUnNatural(n);
      else showNatural(n);

но понимаю, что криво. Кода после (n === null) никакого, если туда пишу break - не работает вообще. Если (n === null) на вторую строчку перемещаю (за else if), то работает как выше написал. Не понимаю ничего (

Последний раз редактировалось Izumkin, 06.11.2022 в 22:26.
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2022, 22:54
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

function askCh() {
	while (true) {
		const s = prompt('Chislo', '');
		if (!s) return null;
		const n = +s;
		if (n>0) return n;
		alert(`Число (${n}) не натуральное. Введите натуральное число!`);
	}
}

askCh();
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2022, 00:29
Новичок на форуме
Отправить личное сообщение для Izumkin Посмотреть профиль Найти все сообщения от Izumkin
 
Регистрация: 06.11.2022
Сообщений: 3

Сообщение от voraa Посмотреть сообщение
function askCh() {
	while (true) {
		const s = prompt('Chislo', '');
		if (!s) return null;
		const n = +s;
		if (n>0) return n;
		alert(`Число (${n}) не натуральное. Введите натуральное число!`);
	}
}

askCh();
Спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать перезагрузку скриптов/функций при подгрузке контента с помощью AJAX? yii2 jQuery 2 27.09.2017 19:48
Table - как избавиться от автоматич. уменьшения ширины при уменьшении размера экрана? eugen35 (X)HTML/CSS 5 22.08.2014 12:25
Как избежать полосы прокрутки при анимации Bizon4ik Общие вопросы Javascript 4 21.06.2014 13:51
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как задать изменение src при прокрутке chandler Элементы интерфейса 3 12.01.2012 01:23