2016-04-01 6 views
-2

私はクイズがあり、正しく機能しています。ただし、正しい質問の部分がある場合、誤った質問は表示されません。 (ワークス正しい質問部分がない)スクリプトのJavaScript:Multiple Document.Write

正しい質問部分:

var cmessage = '<p>You got ' + score; 
cmessage += ' out of ' + questions.length; 
cmessage += ' questions correct.<br>' + '<p>' + '<p> Correct Answers: ' + '<br>'; 

for(var c in cA) { 
    cmessage += questions[cA[c]][0] + '<br>' + questions[cA[c]][1] + '<br>'; 
} 

document.write('<br>' + cmessage + '</br>'); 

不正な質問部分:

var imessage = '<br><br><p>You answered ' + incorrect.length; 
imessage += '<p> questions incorrect. Your incorrect questions: </p>'; 

for(var i in incorrect){ 
    imessage += '<p> ' + questions[incorrect[i]][0] + '<br>' + questions[incorrect[i]][1] + ' </p>'; 
} 

document.write('<p>' + imessage + '</p>'); 

私は誤った部分が現れてもらうにはどうすればよいですページにも?

+1

あなたは 'document.write()'を使用するよう教えていますか?非常に悪い形。あなたのお金を取り戻す。 –

+0

もっと良い方法は何でしょうか?新しいものを学ぶためのすべて。 – wiredlime2015

+0

'document.write'は、呼び出すたびにドキュメントの内容全体を置き換えます。さまざまなJavaScriptメソッドを使用して個々のDOMノードを操作できます。また、これを処理するためのjQueryやReactのような素晴らしいフレームワークもあり、DOMを操作する必要はありません。 –

答えて

-1

innerHTMLを使用して、結果をDOMのdivに追加します。この答えは関連していないというコメントを受けて

var imessage = '<b>foo</b>'; 
 
var cmessage = '<b>bar</b>' 
 

 
var divCorrect = document.getElementById('correct'); 
 
var divIncorrect = document.getElementById('incorrect'); 
 

 
divCorrect.innerHTML = cmessage; 
 
divIncorrect.innerHTML = imessage;
<div id="correct"></div> 
 
<div id="incorrect"></div>


私はOPの問題はdocument.writeを使用から生じるので、この解決策を提案していますDOMのすべてを上書きします。 document.writeの2回目の使用は、最初に使用したものを上書きします。したがって、適切なアプローチは、DOM内の要素を変更することです。これはinnerHTMLで行うことができます。 document.writeの代わりにinnerHTMLを使用すると、2番目の変更が最初のものを上書きするのを防ぐことができます(2つの変更が異なるDOM要素を対象とすると仮定します)。

+0

しかし、無関係の答えは何か他のことを記述しています。 –

+0

@AsadAli:これはどういう意味ですか?この質問は、なぜdocument.writeが動作していないのかを質問します。 1つの解決策は、innerHTMLを使用してDOM全体がdocument.writeで上書きされないようにすることです。これにより、ドキュメント全体を上書きすることなくDOMに複数の変更を加えることができ、これがOPの問題の原因です。ソリューションは、document.writeを使用せず、特定のDOM要素を変更することです。 –

関連する問題