Запрос Parsint всегда отображается как NaN

#javascript #parseint

#javascript #parseint

Вопрос:

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

В браузере я вижу, что значение радиоприемника принимается правильно, и я использую parseint для преобразования его в число. Но явно что-то не так

Ценю вашу помощь.

 <form id="form1" method="post">
<br><strong><label for="benefit1">From the list below select those that are ISO27001 Benefits 
</strong></span></label><br><br>
<input type="checkbox" name="benefit1" value="1" /> Helps you to comply with other regulations</p>
<input type="checkbox" name="benefit2" value="1" /> Keeps confidential information secure</p>
<input type="checkbox" name="benefit3" value="1" /> Protects the company, assets, shareholders and 
directors</p>
<input type="checkbox" name="benefit4" value="1" /> Allows for secure exchange of information</p>
<input type="checkbox" name="benefit5" value="1" /> Manages and minimises risk exposure</p>


<br><input id="Q4PrevBut" type="button" Value="Previous Question">  
    <input id="Q4NextBut" type="button" Value="Next Question">  

</form>

</div>

<div class ="Q5">

<p>Your score is: <span id="grade"></span></p>

<script>

var a1 = parseInt($("input[name='benefit1']:checked").val());

var result = a1;
   
document.getElementById("grade").innerHTML = resu<

</script>

</div>
</body>
</html>
  

Комментарии:

1. Ваш код запускается немедленно, не дожидаясь, пока пользователь что-либо введет. Вам необходимо предоставить прослушиватель событий

2. Вам также необходимо учитывать, что $("input[name='benefit1']:checked").val() будет вычисляться, если флажок не установлен.

Ответ №1:

Ваш запрос $(«input [name=’benefit1′]:проверено»).val() получит элемент ввода с name=’benefit1′, только если он отмечен, но ваш скрипт выполняется сразу после загрузки страницы, когда флажок не установлен. Таким образом, этот запрос $ («input [name=’benefit1′]:checked») не извлекает никаких элементов. Мое предложение состоит в том, чтобы прикрепить событие onclick к каждому элементу checkbox и вызвать функцию, которая обрабатывает событие. Что-то вроде этого: <input type="checkbox" name="benefit1" value="1" onclick="handleCheckbox(this)"/> функция handleCheckbox:

 function handleCheckbox(checkbox){
   result = parseInt(this.value);
...
}