2016-09-16 1 views
-2

Я делаю викторину JavaScript, и мне было интересно, могут ли радио кнопки с таким же именем иметь одинаковые значения? Я хотел дать правильный ответ значение «правильный», а другой неверный ответ на значение «неверно» для оценки моей викторины. Я искал другие примеры и не видел, чтобы другие спрашивали.JavaScript Quiz - Возможно ли иметь одинаковые значения для переключателей для проверки?

JavaScript ниже для добавления баллов

function showResults_onclick() { 
    var myForm = document.form1; 
    var totalScore = 0; 

    var Answer1 = myForm.q1.options[myForm.q1.selectedIndex].value; 
    if (Answer1 == correct) { 
    totalScore ++; 
    }; 

    myForm.showResults.value ="Congratulations your total score is " 
    + totalScore + "/1!"; 
} 

ниже код для викторины HTML.

<form name="form1" action="" method="post"> 

    <h3>Question 1: Answer is A! </h3> 
    <input type="radio" name="q1" value="correct">A</input><br> 
    <input type="radio" name="q1" value="incorrect">B</input><br> 
    <input type="radio" name="q1" value="incorrect">C</input><br> 
    <input type="radio" name="q1" value="incorrect">D</input> 
    <br><br> 


    <input type="button" name="submitAnswers" value="Submit" 
    onclick="showResults_onclick()"> 
    <br><br><br> 

    <textarea name="showResults" rows="8" cols="40"></textarea> 
</form> 

Я предполагал, что код

myForm.q1.options[myForm.q1.selectedIndex].value 

будет либо возвращать «правильно» или «неправильно» в зависимости от выбора пользователей, которые я бы тогда, пропущенном через если заявление подсчитать баллы.

ошибка говорит

Uncaught TypeError: Не удается прочитать свойство 'неопределенные' неопределенной

для одной и той же линии

myForm.q1.options[myForm.q1.selectedIndex].value; 

Спасибо за помощь!

+1

В '' '' '' '' '' '' '' '' '' '' '' '' 'Что вы имеете в виду? – Rayon

+0

'myForm.q1.options [myForm.q1.selectedIndex] .value' будет применимо к меню' select' под названием 'q1', а не к группе переключателей. Кроме того, если вы назначаете 'correct' в качестве значения (или неверного), тогда люди могут легко получить 100%, заглянув в код, конечно – RamRaider

+0

О, вы правы! Я полностью перепутал его с полем выбора, где должны быть предусмотрены параметры. Спасибо, что дали мне знать! – peakersky

ответ

1

I ... was wondering if radio buttons grouped with the same name could have same values?

Да, это нормально.

I was assuming that the code of

myForm.q1.options[myForm.q1.selectedIndex].value

would either return ‘correct’ or ‘incorrect’ depending on the users’ choice, which I would then put through the if statement to tally the scores.

the error says

Uncaught TypeError: Cannot read property 'undefined' of undefined

Поскольку q1 не options; options относятся к select элементы, а не переключатели.

Чтобы получить значение выбранной кнопки радио:

  1. Используйте :checked pseudo-class:

    var selectedButton = document.querySelector("input[name=q1]:checked"); 
    var value = selectedButton ? selectedButton.value : null; 
    
  2. Используйте цикл:

    var value; 
    for (var i = 0; i < myForm.q1.length; ++i) { 
        if (myForm.q1[i].checked) { 
         value = myForm.q1[i].value; 
         break; 
        } 
    } 
    
  3. Используйте встроенный петля в ES2015 +:

    let selectedButton = Array.from(myForm.q1).find(b => b.checked); 
    let value = selectedButton ? selectedButton.value : null; 
    
+0

Спасибо T.J Crowder, это действительно хорошая кодировка – peakersky

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