|
Не работает функция по кнопке
Всем привет.:) Помогите разобраться, почему у меня не работает цикл в функции start:
function start(data) {
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>';
}
break;
}
}
$(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 = '';
if(fieldsCount) {
row = '<form>';
start;
row += '<button onclick="return false; start;">Далее</button></form>';
$('#feeds').html(row);
}
}
}, "json");
return false;
});
});
Функция start, прогоняющая цикл, вызывается при щелчке по элементу input:image. Но цикл не работает. Он использует полученные с сервера данные и потом работает с ними. Но как передать в вызываемую функцию эти данные? Вроде же указал: function start(data). Мне нужно, чтобы он выполнил этот цикл, а потом при нажатии по кнопке "Далее", которая создается в функции метода $.post, прогнал этот цикл еще раз. |
Вообщем не стал я выносить функцию start отдельно, а оставил ее внутри функции(function(data){...}) метода $.post. Там же ее определяю, там же и вызываю, передавая в качестве аргумента data:
$(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 = '';
if(fieldsCount) {
row = '<form>';
function go(data) { //определяю функцию
alert("Ok!");
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>';
}
break;
}
}
go(data); //вызываю функцию, передавая в параметре 'data', так как цикл использует данные с сервера
row += '<button onclick="return false; go(data);">Далее</button></form>';
$('#feeds').html(row);
}
}
}, "json");
return false;
});
});
Теперь цикл выполняется, но после того как я нажимаю кнопку "Далее", функция больше не работает. Почему так? |
если Вы пишите onclick="return false; go(data); то до go(data) дело не дойдет надо просто onclick="go(data)"
Но тут у Вас еще и go и data не определены надо их гдето запоминать |
Кажется начинаю понимать... Когда нажимаю кнопку 'Далее', происходит вызов функции go с параметром data. Но он не знает откуда взять этот параметр, так как он находится в функции метода $.post. То есть извне эту функцию вызвать нельзя, только из тела функции метода $.post. Как же тогда быть? Может данные с сервера куда-то отдельно сохранять, чтобы их можно было использовать не только в теле этой функции?:-?
|
Цитата:
|
Цитата:
|
Цитата:
|
Если выношу функцию отдельно, то не передается параметр data. Почему так?
|
Цитата:
там ошибка написано row = '<form>'; start; надо start(data) ну и гдето data запоминать и все нормально будет return false надо убрать-для чего он Вам не понял |
Цитата:
|
| Часовой пояс GMT +3, время: 20:08. |
|