2016-12-19 11 views
0

Я пытаюсь создать базовый тест IQ с JavaScript, содержащий только 6 вопросов.Как изменить значение всплывающего окна в процентах?

Если у вас есть все вопросы, и после нажатия кнопки «Отправить» автоматическое всплывающее окно даст вам оценку 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 [comma operator] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator) – Barmar

ответ

0

Это просто, что код немного из того, и вы перепутали две переменные.

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

В качестве побочного примечания, для большей ясности в вашем коде, я бы переписал '(оценка * 100)/6' как' (оценка/6) * 100'. Функция '== true' также является избыточной в ваших условных выражениях (ее можно удалить). –

+1

В качестве побочного примечания я всегда добавлял ветви операторов 'if' в' {'и'} ', чтобы избежать ошибок позже. –

+0

@ MarionX.Koumoutopoulou Инициализировать 'счет', может быть? (См. Обновленный ответ.) –

 Смежные вопросы

  • Нет связанных вопросов^_^