2017-09-26 30 views
1

私はjavascriptissexy.comからエクササイズをしています。エクササイズはクイズザを作ることです。変数のページ値に基づいて質問を表示しようとしていますが、質問は配列オブジェクトに格納されています。次のボタンをクリックすると、ページ変数が1だけインクリメントされ、次の質問が選択肢とともに表示されます。追加された要素を削除するにはどうすればよいですか?

私がしたいのは、次のボタンをクリックした後、以前に追加された質問とその選択肢を削除することです。どのようにすればいいですか?

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]); 
    } 
} 

答えて

0

ないあなたはjQueryのを使用する場合は必ずけど。

$('legend').empty(); 

あなたがここでより多くの情報を見つけることができます:空のjQueryの()は、簡単のように以前に追加された質問を削除することができます機能使用jQuery API empty() function

+0

どうすればいいですか? –

2

まあの代わりを.append()を毎回使用して、あなたは$("legend").children().replaceWith()を使用することができます。

例えばそれぞれの場合のコードは次のようになります。

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

これは、それぞれの場合の$("legend")コンテンツに置き換えられます。

編集:

あるいは、最善のアプローチは、このよう.html()方法を使用することです:

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

注:私はあなたが同じことをやっていることがわかり

どちらの場合も、同じステートメントを使用して、switchブロックの目的は何ですか?

+0

は、推奨されるempty()を使用するのではなく、関数内で折り返すのではなく、この良いですか?だから私はそれぞれの場合に関数を呼び出すことができますか?このように 'function appendQuestion(){ $( 'legend')。empty() .append(textNode); } ' –

+0

@Jcanここではうれしいことはありませんが、それはやり方は2通りありますが、' .html() 'メソッドを使うのが一番良いと思います。 –

関連する問題