Test

Hola. Quiero hacer unt est autocorregido en una página web, de manera que al pulsar un botón aparezca en uno de los campos del formulario la puntuación obtenida. Pensé en hacerlo en javascript pero no conozco el lenguaje. Investigando por ahí, conseguí hacer el siguiente script, que me funciona:
<script language="JavaScript">
function puntua()
{
puntos=
document.Formulario.D1.value +
document.Formulario.D2.value +
document.Formulario.D3.value +
document.Formulario.D4.value +
document.Formulario.D5.value
palitos=puntos.length
document.Formulario.puntuacion.value= palitos
}
</script>
Donde D1.. D5 son las 5 preguntas y puntuación es el campo del formulario donde sale reflejada la puntuación. El valor de cada respuesta lo especifico con caracteres(dos seria ii, cinco iiiii etc.), no se si es la mejor opción, pero es como se me ocurrió hacerlo.
El problema es que el test solo funciona si para colocar las respuestas uso desplegables. Si uso grupos de opción, no funciona. Por ejemplo:
<input type="radio" name="D1" value="ii">2
<input type="radio" name="D1" value="iiiiiiii">8
¿Qué debo hacer para que funcione con botones de opción?
Saludos, Recon
1

1 respuesta

Respuesta
1
Te envío un pequeño ejemplo para que veas como utilizar los campos radio.
<HTML>
<head>
<script language="javascript">
function valor(fr){
for (i=0; i<fr.D1.length; i++)
if (fr.D1.checked) alert(fr.D1.value);
}
</script>
</head>
<body>
<form>
<input type="radio" name="D1" value="ii">2
<BR>
<input type="radio" name="D1" value="iiiiiiii">8
<BR>
<input type="radio" name="D1" value="iiiii">5
<br>
<input type=button value="sumar" onClick="valor(document.forms[0]);">
</form>
</body>
</HTML>
Como ves, son tratados como si fueran array, entonces tienes que buscar el campo que esta chequeado para saber el valor de grupo de campos radio.
Hola. Muchas gracias por ser tan rápido. Creo que entiendo lo que me comentas, pero tengo una duda.
No veo como aplicar eso de manera que sume todas las puntuaciones de forma sencilla. El test tendrá unas 100 preguntas (no me importa el nombre que se le de a cada pregunta, si interesa usar algún tipo de nombre sistemático para recorrerlos con un bucle o lo que sea), y lo único que se me ocurre es usar la función que me diste para guardar en 100 variables la puntuación de cada una, pero.. uf.
¿Me puedes decir como aplicar eso al test en su conjunto, de forma que sume los valores? Me da igual que devuelva el total de puntos en una ventana emergente, en un campo del formulario o donde sea.
Saludos, Recon
Lo de la rapidez, ha sido casualidad, me has pillado en casa aburrido y conectado a internet, así que has tenido suerte ;)
Bueno, te envío otro parecido, solo que es más general y puedes aplicarlo a diferentes tipos de campos.
<HTML>
<head>
<script language="javascript">
function valor(fr){
var total=0;
for (cont=0; cont<fr.elements.length; cont++){
if (fr.elements[cont].type=="radio"){
if (fr.elements[cont].checked) total=total+fr.elements[cont].value.length;
}
}
alert(total);
}
</script>
</head>
<body>
<BR>
<form>
UNO<BR>
<input type="radio" name="D1" value="i">1
<input type="radio" name="D1" value="ii">2
<input type="radio" name="D1" value="iii">3
<br><BR>DOS<BR>
<input type="radio" name="D2" value="iiii">4
<input type="radio" name="D2" value="iiiii">5
<input type="radio" name="D2" value="iiiiii">6
<BR><BR>TRES<BR>
<input type="radio" name="D3" value="iiiiiii">7
<input type="radio" name="D3" value="iiiiiiii">8
<input type="radio" name="D3" value="iiiiiiiii">9
<BR><BR><input type=button value="sumar" onClick="valor(document.forms[0]);">
</form>
</body>
</HTML>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas