Как break-нуть функцию с рекурсией? (я новичек)
Задача - принять число, и потом поменять фон число раз, равное этому числу.
Менять фон бесконечное число раз - получается. Но если ввести эту строку: if (Number(i)==Number(x)) break; - то функция вообще не запускается. В чём причина, и как можно выполнить данное условие?
i=0;
function func1(){
x=Number(document.form1.inp1.value);
if(document.bgColor=="yellow") document.bgColor="white";
else document.bgColor="yellow";
setTimeout(func1, 2000);
i++;
if (Number(i)==Number(x)) break;
}
|
А какой смысл брейкать ф-цию, если она после строки с брейком все равно ничего не будет выполнять дальше?
Изпользуйте return. |
Цитата:
|
Если я правильно понял, то Вам нужно это:
var i = 0, timeout;
function func1(){
x = Number(document.form1.inp1.value);
if(document.bgColor=="yellow") document.bgColor="white";
else document.bgColor="yellow";
timeout = setTimeout(func1, 2000);
i++;
if (Number(i)==Number(x)) clearTimeout(timeout);
}
Упрощённый вариант:
var i = 0, timeout;
function func1() {
document.bgColor = document.bgColor == 'yellow' ? '#000' : 'yellow';
timeout = setTimeout(func1, 2000);
if (++i == document.form1.inp1.value) clearTimeout(timeout);
}
Правильный вариант:
function func1() {
var i = 0, int, m, n = document.form1.inp1;
int = setInterval(function() {
document.body.bgColor = (m ^= 1) ? 'yellow' : '#000';
if(++i == n.value) clearInterval(int);
}, 2000);
}
|
Цитата:
|
| Часовой пояс GMT +3, время: 10:48. |