Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2012, 16:06
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Как изменить действие функции
Приветствую всех. Подскажите как можно изменить действие функции button(), вызываемой при нажатии кнопки "Далее". Она создает и выводит новые элементы input. Кнопка "Назад" ничего не создает, а только скрывает текущие элементы и показывает предыдущие. Мне нужно, чтобы кнопка "Далее" делала то же самое, что и "Назад", но при условии, что создаваемые элементы уже существуют. Как это можно реализовать?
var Data; var i = 0;
function button(x) {
if(x==1) {       //выполняется если нажата кнопка "Далее"
$('#here' + i).css("display", "none");
i++;
go();
$('#back').css("display", "inline-block");
}
else if(x==2){   //Выполняется если нажата кнопка "Назад"
$('#here' + i).css("display", "none");
i--;
$('#here' + i).css("display", "block");
}
}

function go(data) {
data = Data;
if(i > data.length - 1) {
return false;
}
var row = '';
row = '<span id="here'+i+'">';
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>';
}
row += '</span>'
$('#feeds').prepend(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;
var row = '';
if(fieldsCount) {
row = '<form><button onclick="button(1); return false;">Далее</button>';
row += '<button id="back" style="display: none" onclick="button(2); return false;">Назад</button></form>';
$('#feeds').html(row);
go(Data);
}
}
  }, "json"); 
return false;
});
});

Последний раз редактировалось Dimaz, 03.12.2012 в 16:11.
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2012, 16:15
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Когда возвращаешься к предыдущему вопросу, ранее выбранные варианты ответов сохраняются. Но проблема в том, что когда Нажимаешь "Далее", создается следующий вопрос с вариантами, даже если он уже был создан и просто скрыт. Т.е. выбранные варианты ответов теряются.
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2012, 17:26
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Написал код с условием, где проверяется существует ли данный элемент на странице. Если существует, возвращается false, а если не существует, тогда создается.
function button(x) {
if(x==1) {
$('#here' + i).css("display", "none");
var z = $('#here' +i).length;    //пробуем найти этот элемент на странице
if(z) {      //если нашли возвращаем false
return false;
}
else {   //если не нашли, создаем новый
i++;
go();
$('#back').css("display", "inline-block");
}
}
else if(x==2){
$('#here' + i).css("display", "none");
i--;
$('#here' + i).css("display", "block");
}
}

Но опять проблема! Сразу же возвращается false, так как условие верное. При первом запуске скрипта еще до нажатия "Далее" создается первый элемент с id="here0"(т.е. выводится первый вопрос). А переменная i при первом запуске равна нулю, следовательно он находит этот элемент и возвращается false. Как сделать, чтобы он начинал проверять с того момента когда i больше нуля?

Последний раз редактировалось Dimaz, 03.12.2012 в 17:28.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать eval в контексте другой функции для доступа к ее локальным переменным? Почемучкин Общие вопросы Javascript 8 29.10.2012 22:31
Как временно запретить вызов функции? Dazar Общие вопросы Javascript 9 02.09.2012 22:52
Как привратить имя функции в саму функцию webmakaka Общие вопросы Javascript 2 15.09.2011 16:23
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
как изменить css свойсво нескольких елементов? IIIgun Общие вопросы Javascript 17 12.08.2011 12:20