2016-06-08 4 views
0

Полностью новый для Javascript и jQuery. Я создаю эту викторину с Trivia с помощью HTML, CSS и Javascript/jQuery и столкнулся с проблемами.Попытка показать оценку по простой HTML и JavaScript Общая информация

Вот мой полный код - https://jsfiddle.net/CeeSt/8wLj1pk2/ для справки.

Вот отрывок из моего HTML и JS -

<div class="question">Question1? 
    <ul class="answers"> 
    <li><label><input name="Question0" id="correct" type="checkbox"> Answer1</label></li> 
    <li><label><input name="Question0" id="wrong" type="checkbox"> Answer2</label></li> 
    <li><label><input name="Question0" id="wrong" type="checkbox"> Answer3</label></li> 
    </ul> 
</div> 

JS файл -

var score = 0; 

function Results() { 
    if (document.getElementById("correct").checked === true) score++; 
    else (alert("Incorrect!")); 

} 

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

+0

Вы должны использовать кнопки «radio», я думаю! – Rayon

+0

Я задавался вопросом, не изменилось ли использование выбора ... – user6442393

+1

У вас не должно быть дубликата 'id =" wrong "', идентификаторы должны быть уникальными. Используйте классы вместо идентификаторов. – Barmar

ответ

0

Я согласен с используя переключатели и значение. Вы можете легко вычислить оценку следующим образом:

var score = $('input:checked[value=correct]').length 

Смотрите пример здесь: https://jsfiddle.net/wLxr3ooq/

Примечание: Если вы измените «значение» в «идентификатор» он все еще работает ... но вы должны избегать наличия повторяющихся идентификаторов

+0

А, да, теперь он говорит, что «Результаты» не определены ... но мне это даже не нужно! ! Это очень помогает! – user6442393

+0

ты потрясающий. Это сработало отлично. – user6442393

1

Вы не можете это сделать, используя свойство id. Однако вы можете использовать свойство value.

Затем вам необходимо изменить поле оценки. Я не думаю, что видел где-нибудь, где вы это сделали.

+0

_ «Вы не можете это сделать с помощью id» _? Ты уверен ? – Rayon

+0

Я думаю, что изначально у меня было свойство value, но почему-то возникали проблемы с Javascript, распознающим «ответы» ... – user6442393

+0

Вы должны столкнуться с проблемами, учитывая, что идентификатор должен быть уникальным для каждого элемента. Атрибут value тега ввода может быть. –

1

Вы должны преобразовать их в радио-кнопку, а затем оценить выбранную кнопку радио, чтобы проверить, является ли это правильно:

<div class="question">Question1? 
    <ul class="answers"> 
    <li><label><input name="Question0" value="correct" type="radio"> Answer1</label></li> 
    <li><label><input name="Question0" value="wrong" type="radio"> Answer2</label></li> 
    <li><label><input name="Question0" value="wrong" type="radio"> Answer3</label></li> 
    </ul> 
</div> 

и ваш JS будет выглядеть примерно так:

var score = 0; 

function Results() { 
    if ($("input[name=Question0]:checked").val() == "correct") { 
    score++; 
    } else { 
    alert("Incorrect!"); 
    } 
} 
0

Я думаю, проблема в том, что вы назначаете один и тот же идентификатор более чем одному элементу, что недопустимо. Вместо этого вы можете назначить им классы. Поэтому в вашем случае присвойте классу неправильный и класс правильный на соответствующие элементы. Затем, в вашем JavaScript, попробуйте следующий

var x = document.getElementsByClassName("correct"); 

Это будет захватывать все элементы с классом правильно и вернуть их в массив.

+0

Я вижу, что это работает, я еще не пробовал, я проверю это ... спасибо! – user6442393

+0

Я удалил часть о счете. Я действительно не проверял, как вы определяете счет, но я все же думаю, что это должно помочь :) – spidertothefly127

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