Tenemos un cuestionario con varias preguntas, la mayoría de las cuales consisten en varias casillas de verificación/botones de radio para que el usuario seleccione. A medida que el usuario navega por las preguntas, lo tenemos para que, en lugar de cargar una nueva página web para cada conjunto de preguntas, oculte el formulario actual y revele el siguiente formulario. Luego guarda las respuestas dadas y al final del cuestionario genera una versión concatenada de todas las respuestas dadas en un formato particular (es deliberadamente como es)
Directamente debajo está nuestro intento actual:
function checkboxQ1() { i = 1; while(i < 8) { var Q1increment = "Q1-"+i; var Q1evaluate = document.getElementsByName(Q1increment); if(Q1evaluate.checked) { Q1_ticked = Q1_ticked + Q1evaluate; } i++ alert(i + ", " + Q1evaluate + ", " + Q1_ticked) } alert(Q1_ticked) everything = everything + ", " + Q1_ticked alert(everything); }; Sin embargo, esto no parece funcionar, ya que durante el ciclo while muestra que la variable Q1evaluate es igual a: [object NodeList] y no sé cómo solucionarlo. A continuación se muestra el HTML relevante, como referencia, si ayuda.
<form> <input type="checkbox" id="Q1checkbox" name="Q1" value="Q1-1"> <label for="Answer1"> Answer Choice 1 </label> <br> <input type="checkbox" id="Q1checkbox" name="Q1" value="Q1-2"> <label for="Answer2"> Answer Choice 2 </label> <br> <input type="checkbox" id="Q1checkbox" name="Q1" value="Q1-3"> <label for="Answer3"> Answer Choice 3 </label> </form>Lo tenemos funcionando para nuestras preguntas desplegables, pero estamos teniendo problemas con estas casillas de verificación, y asumo que los botones de opción tendrán un dolor similar cuando lleguemos a ellos.
Me las arreglé para encontrar una solución, pero su apariencia es bastante diferente a lo que estaba intentando originalmente.
HTML
<form> <input type="checkbox" id="Q1checkbox1" name="Q1" value="Q1-1"> <label for="Answer1"> Answer Choice 1 </label> <br> <input type="checkbox" id="Q1checkbox2" name="Q1" value="Q1-2"> <label for="Answer2"> Answer Choice 2 </label> <br> <input type="checkbox" id="Q1checkbox3" name="Q1" value="Q1-3"> <label for="Answer3"> Answer Choice 3 </label> </form>JAVASCRIPT
function ToQuestion2(){ i = 1; while (i < 4) { if (document.getElementById('Q1checkbox'+i).checked) { var Q1checked = "Q1-"+i; everything = everything + ", " + Q1checked; } i++ } alert(everything); document.getElementById("Q1").style.display = "none"; document.getElementById("Q2").style.display = ""; };