Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 01.12.2012, 17:27
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Dimaz Посмотреть сообщение
А глобальную переменную куда нужно вписать?
var Data;
function go(data) {
alert("Ok!");
.....
$.post('save_data.php', {drink: drink},
function(data){Data=data;
....
Ответить с цитированием
  #32 (permalink)  
Старый 01.12.2012, 17:40
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Не работает.
var Data;
function go(data) {
alert("Ok!");
var row = '';
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>';
}
break;
}
row += '<button onclick="function(data) {Data = data; go(data); return false;}">Далее</button></form>';
$('#feeds').html(row);
}

$(document).ready(function(){
$('form input:image').click(function() {
var drink = $('input[name=drink]:checked').val();
$.post('save_data.php', {drink: drink},
function(data){
Data = data;
if(data) {
var fieldsCount = data.length;
if(fieldsCount) {
go(data);
}
}
  }, "json"); 
return false;
});
});
Ответить с цитированием
  #33 (permalink)  
Старый 01.12.2012, 17:53
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Опишите теперь как должно работать щас попробуем закончить -Вы не написали пока ничего
То есть первый раз запускается из обработчика и вызываем go и вытаскивает из data
с i=0;а потом-как нажимаем на кнопку снова запускаем go но с i=1
а дальше?
Ответить с цитированием
  #34 (permalink)  
Старый 01.12.2012, 18:01
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от vadim5june Посмотреть сообщение
Опишите теперь как должно работать щас попробуем закончить -Вы не написали пока ничего
То есть первый раз запускается из обработчика и вызываем go и вытаскивает из data
с i=0;а потом-как нажимаем на кнопку снова запускаем go но с i=1
а дальше?
Ну вообще он должен удалить старые inputы и вывести новые. А чтобы выбранное значение в старых не терялось, помещать его в какой-нибудь скрытый элемент в форме.
Выводится первый вопрос и варианты ответов, нажимаем кнопку Далее, должен появиться следующий вопрос и другие варианты. А старый вопрос с вариантами должен удаляться. Именно удаляться, а не заменяться, так как в одном вопросе может быть 3 варианта ответов, а в другом уже например 4.
Ответить с цитированием
  #35 (permalink)  
Старый 01.12.2012, 18:11
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Так попробуйте
var Data;var ii=0;
function go() {var data=Data;
alert("Ok!=+ii");
var row = '';
row = '<form>';

row += '<b>' + data[ii].questions + '</b><Br>';
var ss = data[ii].answers.split(',');
for (var i2 = 0; i2<ss.length; i2++) {
row += '<input type="radio" name="id_answer'+ii+'" value="' + i2 + '">' + ss[i2] + '<Br>';
}

row += '<button onclick="go(); return false;">Далее</button></form>';
$('#feeds').html(row);
ii++;
}

$(document).ready(function(){
$('form input:image').click(function() {
var drink = $('input[name=drink]:checked').val();
$.post('save_data.php', {drink: drink},
function(data){
Data = data;
if(data) {
var fieldsCount = data.length;
if(fieldsCount) {
go();
}
}
  }, "json"); 
return false;
});
});

Последний раз редактировалось vadim5june, 01.12.2012 в 18:13.
Ответить с цитированием
  #36 (permalink)  
Старый 01.12.2012, 18:20
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Отлично! Работает. Спасибо огромное. Сейчас поем, буду дальше с сохранение значения в скрытый элемент разбираться.
Ответить с цитированием
  #37 (permalink)  
Старый 01.12.2012, 19:34
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Dimaz
буду дальше с сохранение значения в скрытый элемент разбираться.
Лучше хранить в объекте-только результат=номер вопроса-номер ответа(ответов если допускается несколько)
var Data;var ii=0;var Rez={};
Ответить с цитированием
  #38 (permalink)  
Старый 01.12.2012, 19:47
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Я не учел один момент. Если пользователь захочет вернуться к предыдущему вопросу. В таком случае нужно создать еще одну кнопку, "Назад". Нажимаем "Далее", делаем инкремент i++, если жмем "Назад", тогда декремент i--. Только как сделать, чтобы он делал это по нажатию кнопок.
Выбранные значения наверно лучше сохранять в массив? Потом по нажатию кнопок пробегаться по нему, чтобы при переключении вопросов показывался ранее выбранный вариант. Т.е. вставлять галочку на ранее выбранном ответе, а то пользователю придется заново выбирать ответ.
Были мысли выводить вопросы с вариантами ответов поочередно. Т.е. вывести первый, нажимаем "Далее", выводится второй, а первый скрывается средствами свойства CSS:
$(document).ready(function(){
    
var i = 0, questions = $('form p');
questions[0].style.display = 'block';
$('#right').click(function(){
if(i === questions.length - 1) {
this.style.display='none';
document.getElementById('left').style.display='none';
questions[i].style.display='none'; 
$('input[type=submit]').show();    
return false;
}  
questions[i].style.display='none'; 
i++;
questions[i].style.display='block';
$('#left').show();
});
$('#left').click(function(){
if(i === 0) {
return false;
}
questions[i].style.display='none'; 
i--;
questions[i].style.display='block';
if(i === 0) {
this.style.display='none'
}
});
});

Какая идея на ваш взгляд более удачная и логичная? Ну и в плане эффективного распределения и потребления ресурсов, что лучше?
Ответить с цитированием
  #39 (permalink)  
Старый 01.12.2012, 20:00
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Вот кстати пример реализации этой идеи. Помог один человек сделать:
http://jsfiddle.net/S2Gcb/1/
Не правильно я вам сказал, выводится не поочередно, а все сразу. Только показывается первый, а остальные пока скрыты.

Последний раз редактировалось Dimaz, 01.12.2012 в 20:04.
Ответить с цитированием
  #40 (permalink)  
Старый 01.12.2012, 20:22
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Dimaz Посмотреть сообщение
Вот кстати пример реализации этой идеи. Помог один человек сделать:
http://jsfiddle.net/S2Gcb/1/
Не правильно я вам сказал, выводится не поочередно, а все сразу. Только показывается первый, а остальные пока скрыты.
Если тебя устраивает то вопрос закрыт.
Я так понял что ты для тренировки программирования сам взялся делать потому что в инете много готовых решений
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает при заходе на данную страницу, но работает при рефреше страницы foker jQuery 0 26.11.2012 12:27
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
НЕ работает функция length Golovastik Серверные языки и технологии 4 14.02.2011 17:31
Не работает функция инфоокна tomAlba Общие вопросы Javascript 0 30.01.2011 00:54
Не работает eval в IE ..::Silence::.. Общие вопросы Javascript 8 25.03.2009 13:16