2016-12-19 3 views
0

私は6つの質問だけを含むJavaScriptを使って基本的なIQテストを作成しようとしています。ポップアップウィンドウのスコアをパーセンテージに変更するにはどうすればよいですか?

すべての質問が正しく表示され、送信をクリックすると、自動ポップアップウィンドウに6というスコアが表示されます。ただし、正解の数に基づいてパーセンテージを表示します。ここで

は、(あなたは私の問題は、おそらく変数であることがわかります)私が試したものです:

function calculate() 
{ 
    var x, y, score; 
    y; 

    x = document.personalinfo.firstname.value; 

    score = (y*100)/6; 
    window.alert("Hey " + x + ", your score is: " + score); 

    if(document.IQTest.Q1[0,1,3,4].checked == true) 
     score++; 

    if(document.IQTest.Q2[2].checked == true) 
     score++; 

    if(document.IQTest.Q3[1].checked == true) 
     score++; 

    if(document.IQTest.Q4[3].checked == true) 
     score++; 

    if(document.IQTest.Q5[2].checked == true) 
     score++; 

    if(document.IQTest.Q6[0,2,4].checked == true) 
     score++; 
} 
+1

「スコア/ 6 * 100」? –

+0

回答を確認する前にスコアを表示しているのはなぜですか?そして、あなたは 'y'をどこに設定しますか? – Barmar

+1

'document.IQTest.Q1 [0,1,3,4] .checked == true'はどういう意味ですか? FYI、 'document.IQTest.Q1 [4] .checked == true' - Javascript [カンマ演算子](https://developer.mozilla.org/en-US/docs/Web/JavaScript)について読んでください/ Reference/Operators/Comma_Operator) – Barmar

答えて

0

それはコードが少し順不同でだとあなたは、2つの変数を混同していることだけです。

function calculate() { 
var x, y, score; 

score = 0; 
x = document.personalinfo.firstname.value; 

if(document.IQTest.Q1[0,1,3,4].checked == true) score++; 
if(document.IQTest.Q2[2].checked == true) score++; 
if(document.IQTest.Q3[1].checked == true) score++; 
if(document.IQTest.Q4[3].checked == true) score++; 
if(document.IQTest.Q5[2].checked == true) score++; 
if(document.IQTest.Q6[0,2,4].checked == true) score++; 

y = (score*100)/6; 

window.alert("Hey " + x + ", your score is: " + y); 
} 
+0

ちょっと分かりやすくするために、 '(score * 100)/ 6'を'(score/6)* 100'と書き直してみましょう。 '== true'は条件式にも重複しています(削除することもできます)。 –

+1

補足として、後でバグを避けるために '{'と '}'に 'if'文の枝を常に囲んでいます。 –

+0

@ MarionX.Koumoutopoulou 'score'を初期化しますか? (更新された回答を参照してください) –

関連する問題