Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Цикл while в JavaScript. (https://javascript.ru/forum/events/46583-cikl-while-v-javascript.html)

Mugla 15.04.2014 20:02

Цикл while в JavaScript.
 
Товарищи! Прошу помощи. :help: :cray:

С помощью prompt ввести число от 1 до 50 p=prompt('Введите число от 1 до 50 ','')

Если число удовлетворяет этому промежутку (1 - 50) - закончить цикл, показав alert ('Вы ввели нужно число')

Если ввели число больше 50, вывести окно ввода еще раз, и до тех пор, пока пользователь не введет число в промежутке между 1 и 50.

Если нажать кнопку Cancel, завершить цикл, вывести alert ('Вы нажали Cancel')

Спасибо.

Makarov 15.04.2014 20:04

Вроде сессия еще нескоро, а студенты уже валом пошли.

Покажите нам немножко своего кода, если он есть. Тогда может и поможем

Mugla 15.04.2014 20:09

<html>
<head>
<title>While</title>
</head>
<body>
<script type="text/javascript">
<!--
p=prompt('Введите число от 1 до 50 ','') 
while (p<50) 
{
if (p>50)
p=prompt('Введите число от 1 до 50 ','')
if (p<50)
alert ('Вы ввели нужное число')
if (p==null)
alert ('Вы нажали Cancel')
}
//-->
</script>
</body>
</html>

Sweet 15.04.2014 20:20

Может наоборот?
while (p > 50)

Тип того:
do {
    var p = prompt('Введите число от 1 до 50 ','');
    if (p==null) {
        alert ('Вы нажали Cancel');
        break;
    }
    if (p < 50) alert ('Вы ввели нужное число');
} while (p > 50)
Ну и можно же и отрицательное число ввести, и не число...

Erolast 15.04.2014 20:26

Цитата:

Число должно быть от 1 до 50
Цитата:

while (p<50)
Ну вот у тебя и получается, что если вдруг число правильное - цикл будет продолжаться. Если неправильное - цикл закончится. Если уж строить таким образом, то поменяй "<" на ">".

Но вообще-то это делается так:
while (true) //Делаем бесконечный цикл. Да-да.
{
  //Не забывай оператор var при объявлении переменных!
  var input = prompt("Введите число от 1 до 50", ""); 
  
  if (input == null)
  {
    alert("Вы нажали cancel");
    break;  //Оператор break используется для досрочного завершения цикла.
  }
  input = parseInt(input); //parseInput преобраузет строку в число. Функция prompt возвращает именно строку, а нам нужно число.
  if (isNaN(input))
  {
     //Функция isNaN возвращает true, если аргумент - не число.
     continue; //Оператор continue используется для досрочного перехода к следующей итерации цикла.
  }

  if (input >= 1 && input <= 50)
  {
    alert("Вы ввели нужное число");
    break;
  }
}

Mugla 15.04.2014 20:26

Супер! Но это же do while (

Erolast 15.04.2014 20:36

Цитата:

Но это же do while (
Для кого писалось?)
Цитата:

Сообщение от Erolast (Сообщение 307856)
while (true) //Делаем бесконечный цикл. Да-да.
{
  //Не забывай оператор var при объявлении переменных!
  var input = prompt("Введите число от 1 до 50", "");
   
  if (input == null)
  {
    alert("Вы нажали cancel");
    break;  //Оператор break используется для досрочного завершения цикла.
  }

  input = parseInt(input); //parseInput преобраузет строку в число. Функция prompt возвращает именно строку, а нам нужно число.
  if (isNaN(input))
  {
     //Функция isNaN возвращает true, если аргумент - не число.
     continue; //Оператор continue используется для досрочного перехода к следующей итерации цикла.
  }
 
  if (input >= 1 && input <= 50)
  {
    alert("Вы ввели нужное число");
    break;
  }
}

Я там пару ошибок допустил, из-за чего код не работал - пардон муа, исправил.

Mugla 15.04.2014 20:37

Спасибо за подробное объяснение, но если жмем Cancel то цикл должен завершиться, а тут опять же запрашивает. Помоги еще немного :)

Mugla 15.04.2014 20:40

Спасибо.

Mugla 15.04.2014 20:43

Всем +. Еще раз спасибо!


Часовой пояс GMT +3, время: 19:10.