2014-06-28 5 views
0

Je souhaite que l'utilisateur clique sur le bouton "Suivant" pour passer à la question suivante. Le problème ici est quand je clique sur le bouton, il montre seulement la première question. Où est le problème? Je sais que 'return' renvoie le résultat à la fonction, mais la prochaine fois que j'appuie sur le bouton, l'itérateur (i) n'est pas i + 1?Ajouter un gestionnaire d'événements à un tableau

var changeQuestion = function() { 
    for (var i = 0; i < allQuestions.length; i++) { 
     var newNode = document.createTextNode(allQuestions[i].question); 
     return question_paragraph.replaceChild(newNode, question_paragraph.firstChild); 
    } 
}; 

EventUtil.addHandler(next_button, 'click', changeQuestion); 
+0

pouvez-vous nous montrer le code de 'changeQuestion'? – Arvind

+0

ouais, j'ai édité le post. – Bacchus

Répondre

1

Essayez ceci:

var i = -1; 
function changeQuestion() { 
    i = (i < allQuestions.length) ? (i+1) : -1; 
    var newNode = document.createTextNode(allQuestions[i].question); 

    return question_paragraph.replaceChild(newNode, question_paragraph.firstChild); 
} 
EventUtil.addHandler(next_button, 'click', changeQuestion); 
+0

Est-ce que cela fonctionne à cause du contexte d'exécution (le var i est déclaré dans la portée globale)? – Bacchus

+0

C'est l'une des raisons. L'autre est que je n'utilise pas car j'augmente i sur chaque requête. (aussi, si la fin du tableau est atteinte, il revient au premier élément) – Tanatos

+0

il ne semble pas revenir au premier élément – Bacchus

Questions connexes