2017-09-26 2 views
1

Je fais un exercice de javascriptissexy.com, l'exercice consiste à construire un quizzer. J'essaie de montrer une question basée sur la valeur de page de variable, les questions sont stockées dans l'objet de tableau, quand un bouton suivant est cliqué la variable de page est incrémentée de 1 et la question suivante est montrée avec ses choix. Ce que je veux faire est après le clic de bouton suivant, enlever la question ajoutée précédente et ses choix .. comment est-ce que je peux faire ceci?Comment puis-je supprimer un élément ajouté?

function createQuiz(crPage) { 
    textNode = Allquestions[indexController].question; 
    switch (crPage) { 
     case 0: 
      $("legend").append(textNode); 
      appendChoices() 
      break; 
     case 1: 
      $("legend").append(textNode); 
      appendChoices() 
      break; 
     case 2: 
      $("legend").append(textNode); 
      appendChoices() 
      break; 
     case 3: 
      $("legend").append(textNode); 
      appendChoices() 
      break; 
     case 4: 
      $("legend").append(textNode); 
      appendChoices() 
      break; 
     case 5: 
      $("legend").append(textNode); 
      appendChoices() 
      break; 
     case 6: 
      $("legend").append(textNode); 
      appendChoices() 
      break; 

     default: 
      // code 

    } 
} 


function appendChoices() { 
    for (var i = 0; i < Allquestions[indexController].choices.length; i++) { 
      console.log(Allquestions[indexController].choices[i]); 
    } 
} 

Répondre

0

Vous ne savez pas si vous utilisez jQuery mais; en utilisant la fonction vide() jQuery vous pouvez facilement supprimer question précédemment ajouté comme:

$('legend').empty(); 

Vous trouverez plus d'informations ici: jQuery API empty() function

+0

comment pourrais-je manquer ce .... –

2

Eh bien au lieu d'utiliser .append() chaque fois, vous pouvez utiliser .replaceWith() sur $("legend").children() .

Par exemple, le code dans chaque cas ressemblera à ceci:

$("legend").children().replaceWith(textNode); 
appendChoices() 
break; 

Il remplacera le contenu $("legend") dans chaque cas.

Edit:

Ou meilleure approche serait d'utiliser .html() méthode comme ceci:

$("legend").html(textNode); 
appendChoices() 
break; 

Note:

Je vois que vous faites la même chose Dans chaque cas, en utilisant les mêmes instructions, quel est l'objectif du bloc switch?

+0

est-ce bon plutôt que d'utiliser le vide suggéré() mais envelopper dans une fonction? donc je peux appeler la fonction dans chaque cas? comme ceci 'function appendQuestion() { $ ('legend'). empty() .append (textNode); } ' –

+0

@Jcan Il n'y a rien de bon ici, ce ne sont que deux façons de faire les choses, mais je pense que le mieux serait d'utiliser la méthode' .html() ', voir mon Edit. –