Javascript.RU

while

Задает цикл, который выполняется до тех пор, пока условие верно. Условие проверяется перед каждой итерацией.

Синтаксис

while (condition)
  statement

Аргументы

condition
Условие цикла
statement
Блок или javascript-вызов для выполнения во время итераций

Описание, примеры

Следующий цикл будет повторяться до тех пор, пока n меньше трех.

n = 0
x = 0
while (n < 3) {
  n ++
  x += n
  alert("n="+n+", x="+x)
}

При каждой итерации цикл увеличивает n и прибавляет к x. Переменные x и n последовательно принимают значения:

  1. n = 1, x = 1
  2. n = 2, x = 3
  3. n = 3, x = 6

После окончания третьего прохода, условие n < 3 более не верно, поэтому цикл завершается.


Автор: Гость (не зарегистрирован), дата: 24 ноября, 2009 - 15:23
#permalink

Как добавить возможность выхода по нажатию кнопки Отмена?


Автор: Илья Кантор, дата: 25 ноября, 2009 - 07:36
#permalink

Сам цикл while не предусматривает коммуникации между браузером и пользователем. Пока он выполняется, никакие события не сработают. Интерпретатор подхватит их только после окончания работы while.

Если у вас длинный цикл, то можно делать, скажем, по 1000 итераций за раз, и следующий запуск - через setTimeout. В таком случае между пачками итераций скрипт сможет обработать нажатие кнопки и отменить следующий запуск.


Автор: paratrooper1981, дата: 19 декабря, 2009 - 13:27
#permalink

А можно пример?


Автор: animatio, дата: 13 ноября, 2013 - 12:24
#permalink

Илья, не соглашусь с Вами.
a = true;
while(a){
a = prompt('Enter a');
console.log(a)
};
Здесь есть коммуникации, есть while.


Автор: Гость, дата: 19 января, 2011 - 04:42
#permalink

Прошу прощения за примитивный вопрос, но что значает "+=", а именно "х += n"? Просто не встречался с такой операцией.


Автор: Гость (не зарегистрирован), дата: 19 января, 2011 - 12:07
#permalink

сам нашел ответ в разделе операторы присваивания http://javascript.ru/assignment-operators


Автор: Оганнес (не зарегистрирован), дата: 22 марта, 2013 - 17:48
#permalink

"x+=n" равносилен выражению x=x+n;


Автор: GTG, дата: 21 апреля, 2013 - 14:13
#permalink

Есть ли замена циклу while с возможностью коммуникации между пользователем и браузером?


Автор: animatio, дата: 13 ноября, 2013 - 12:26
#permalink

А что бы Вы хотели, чтобы эта часть кода конкретно делала. Опишите, пожалуйста своими словами, уверен смогу предложить альтернативу.


Автор: Гость (не зарегистрирован), дата: 12 мая, 2013 - 14:28
#permalink

как с помощью операторов цикла посчитать сколько раз встречается последняя цифра в данном числе?заранее спасибо за ответ


Автор: animatio, дата: 13 ноября, 2013 - 13:03
#permalink

//Исходное число
var newNum = 12345622245632,
//преобразуем число в строку
stringNum = '' + newNum,
//последний символ нашей строки
lastChar = stringNum.charAt(stringNum.length - 1),
//счетчик для цикла
i = 0,
//количество совпадений
numOfMathches = 0;

//пока это не последний символ строки
while(i != stringNum.length){
//если символ подномером i равен последнему символу...
if(stringNum.charAt(i) == lastChar){
//...то увеличим число совпадений на еденицу
numOfMathches++;
}
//увеличиваем на еденицу счетчик
i++;
}

//По окончании цикла выводим результат в консоль
console.log(numOfMathches);

Пожалуйста))


Автор: Начинающий (не зарегистрирован), дата: 10 сентября, 2013 - 11:54
#permalink

Почему не работает этот код: while((new Date()).getSeconds()<60) alert("test"); ? Задумка - каждую секунду до истечения минуты выводить алерт.


Автор: Гость (не зарегистрирован), дата: 1 июля, 2014 - 16:29
#permalink

Я бы сделал так:

function testalert()
{
intervalone = setInterval(function()
{
alert('test');
}, 1000);
setTimeout(function()
{
clearInterval(intervalone);
}, 60000);
}

Автор: Гость (не зарегистрирован), дата: 27 октября, 2015 - 15:57
#permalink

Не могу понять почему виснет такая конструкция:

var skip = false;
window.setTimeout(function() { skip = true; }, 1);
while (!skip) {}


Автор: Гость (не зарегистрирован), дата: 27 октября, 2015 - 18:58
#permalink

while (!skip) {} - это бесконечный цикл, вот он и вешает процесс. А setTimeout даже не начинает свою работу, код который вы написали будет выполняется последовательно, и после того как выполниться последняя инструкция, а она у вас бесконечный цикл, то только после неё запустится таймер. А так вы дали только задание браузеру, чтобы то запустил через миллисекунду функцию, но не даете ему сделать запуск таймера возможным!


Автор: Андрей38, дата: 19 августа, 2016 - 00:19
#permalink

Здравствуйте! Помогитите!Не могу решить задачу-после события onload="doSomething()" для ифрейма-возвращаться назад и добавлять еденичку в цикл:
-----------------------Сделал так-не работает! Но onload=alert('!!!') срабатывает!
news = здесь хранятся ссылки для ифреймов
var i = 0;
while (i < news.length) {
document.write(' ');
};
что здесь не так? Должно ведь работать..


 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum