Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как продолжить цикл по кнопке? (https://javascript.ru/forum/misc/33618-kak-prodolzhit-cikl-po-knopke.html)

Dimaz 29.11.2012 18:25

Как продолжить цикл по кнопке?
 
Всем привет. Есть такой код:
//...
var x=1;
for(var i=0; i<3; i++) {
//какой-то код
for(var i2=0; i2<5; i++) {
//тоже какой-то код
}
x--;
if(x==1) {
continue;
}
else {
break;
}
}
row += '<button onclick="return false; b++;">Далее</button></form>';
$('#feeds').html(row);
//...

Цикл делает только один круг и останавливается, так как я изменяю значение переменной x в первом цикле. Как можно сделать, чтобы после нажатия кнопки он продолжился дальше? Нажимаю кнопку, значение переменной x увеличивается на единицу, т.е. по идее снова соблюдается условие продолжения цикла. Но он все равно стоит на месте. Что я делаю не так?

dmitriymar 29.11.2012 19:44

Цитата:

Сообщение от Dimaz
Нажимаю кнопку, значение переменной x увеличивается на единицу,

где?
Цитата:

Сообщение от Dimaz
onclick="return false; b++;">

Цитата:

Сообщение от Dimaz
Как можно сделать, чтобы после нажатия кнопки он продолжился дальше?

открой для себя функции
Цитата:

Сообщение от Dimaz
Но он все равно стоит на месте. Что я делаю не так?

а собственно почему он должен работать ? он уже отработал.
если ты надеешься что во время работы цикла ты можешь нажать на кнопку и код кнопки отработает параллельно с работой цикла-он отработает после того как отработает код вызванный до нажатия кнопки

Dimaz 29.11.2012 19:50

Тут неправильно написал. У меня в скрипте x++

Dimaz 29.11.2012 19:52

Так как тогда сделать, чтобы по кнопке он дальше продолжил работу?
Понял, оператор break тут лишний. Нужен только continue. Но все равно как сделать?

Dimaz 29.11.2012 20:07

Сделал так, но все равно не работает:
//...
var x=1;
for(var i=0; i<3; i++) {
//какой-то код
for(var i2=0; i2<5; i++) {
//тоже какой-то код
}
x--;
if(x==1) {
continue;
}
}
row += '<button onclick="return false; x++;">Далее</button></form>';
$('#feeds').html(row);
//...

Почему он полностью выполняет цикл, если я вычел единицу из переменной x?

9xakep 29.11.2012 20:10

тебе уже сказали: используй функции.
x=false;

function button() {
   if (x) alert('button')
}
/* тут ты творишь там что-то*/
x=true;
button();
x=false;
button();
x=true;
button();

dmitriymar 29.11.2012 20:19

Цитата:

Сообщение от Dimaz
Почему он полностью выполняет цикл, если я вычел единицу из переменной x?

Цитата:

Сообщение от Dimaz
if(x==1) {
continue;
}

ну а где ты ему сказал break ?
Цитата:

Сообщение от Dimaz
Так как тогда сделать, чтобы по кнопке он дальше продолжил работу?
Понял, оператор break тут лишний. Нужен только continue. Но все равно как сделать?

ничего ты вообще не понял. нельзя выполнить код во время того как другой код выполняется.
в твоём случае кнопка появляется после того как цикл отработал.
а еслиб кнопка была до цикла, то код её нажатия выполнился бы только после того как цикл полностью отработал бы

Dimaz 29.11.2012 20:42

Вот полностью код:
$(document).ready(function(){
$('form input:image').click(function() {
var drink = $('input[name=drink]:checked').val();
$.post('save_data.php', {drink: drink},
function(data){
if(data) {
var fieldsCount = data.length;
var row = '';
var b = 1;
if(fieldsCount) {
row = '<form>';
for (var i in data) {
row += '<b>' + data[i].questions + '</b><Br>';
var ss = data[i].answers.split(',');
for (var i2 = 0; i2<ss.length; i2++) {
row += '<input type="radio" name="id_answer'+i+'" value="' + i2 + '">' + ss[i2] + '<Br>';
}
b--;
if(b==1) {
continue;
}
}
row += '<button onclick="return false; b++;">Далее</button></form>';
$('#feeds').html(row);
}
}
  }, "json"); 
return false;
});
});

Вообщем он должен вывести сначала первый вопрос и варианты ответов, а как нажимаешь кнопку, вывести другой вопрос с другими вариантами. Помогите, ну не знаю как сделать:(

A_Kto 28.09.2017 12:49

<form>
<input type="button" name="putButton" id="putButton" value="Click" onclick="click()">
</form>

<script>
var x = 0;
function click() {
for (var i = 0; i < 1; i++) {
x++;
if (x <= 5) {
alert(x);
continue;
} else {
break;
}
}
}
</script>


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