JavaScript - Donde esta el error en este script???

 
Vista:

Donde esta el error en este script???

Publicado por Eduardo (1 intervención) el 12/05/2007 23:11:23
Necesito urgentemente saber donde esta el error en este script, se trata simplemente de una tabla donde se debe cambiar el color de la celda dependiendo de la respuesta dada por el usuario. El valor de la respuesta correcta se almacena en un campo hidden (V1). Si es correcta pone la celda en Verde, si es incorrecta pone en Verde la que es correcta y la que el usuario marco en Rojo. Creo que el codigo tiene el sentido correcto y deberia cumplir la funcion, pero al comprobarlo no hace nada. Tengo que terminarlo para entregarlo el Lunes y no funciona. Hecharme un cable plis. Saludos a todos/as.

<html>
<head>
<title></title>
<script>
function corregir()
{
if(p1resp == V1)
{
if(V1 == "A")
{
p1ca.style.backgroundColor="#669900";
}
if(V1 == "B")
{
p1cb.style.backgroundColor="#669900";
}
if(V1 == "C")
{
p1cc.style.backgroundColor="#669900";
}
}
if(!(p1resp == V1))
{
if(p1resp == "A")
{
p1ca.style.backgroundColor="#ff0000";
}
if(p1resp == "B")
{
p1cb.style.backgroundColor="#ff0000";
}
if(p1resp == "C")
{
p1cc.style.backgroundColor="#ff0000";
}
if(V1 == "A")
{
p1ca.style.backgroundColor="#669900";
}
if(V1 == "B")
{
p1cb.style.backgroundColor="#669900";
}
if(V1 == "C")
{
p1cc.style.backgroundColor="#669900";
}
}
}
</script>
</head>
<body>
<form name="test">
<table width="300px" border="1" style="border-collapse:collapse">
<tr>
<td id="p1ca"><input type="radio" name="p1resp" value="A">A) Celda 1</td>
</tr>
<tr>
<td id="p1cb"><input type="radio" name="p1resp" value="B">B) Celda 2</td>
</tr>
<tr>
<td id="p1cc"><input type="radio" name="p1resp" value="C">C) Celda 3</td>
</tr>
</table>
<input type="button" value="CAMBIAR" onclick="corregir()">
<input type="hidden" name="V1" value="A"><input type="hidden" name="V2" value="B"><input type="hidden" name="V3" value="C">
</form>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Donde esta el error en este script???

Publicado por Jose Hernandez (5 intervenciones) el 13/05/2007 14:35:28
Este código revisado de tu función te permitirá ver los puntos que se tienen que cambiar:

- Es preferible acceder a los elementos de un objeto form mediante el objeto form mismo.
- En el caso de los objetos input de tipo radio, el atributo que hay que verificar es checked.
- Cuando varios elementos de un objeto form comparten el mismo nombre, se "convierten" en un array de objetos.
- Para acceder al objeto td en el código que dejas como ejemplo, usa el método getElementById del objeto document.

function corregir() {
frm = document.forms[0];
if (frm) {
if (frm.p1resp[0].checked) {
if (frm.V1.value == "A") {
document.getElementById('p1ca').style.backgroundColor="#669900";
}
}
} else {
alert('forma no encontrada');
}
}

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Donde esta el error en este script???

Publicado por Gonzalo (107 intervenciones) el 13/05/2007 17:55:23
Si vas a usar document.getElementById() para buscar el td, ¿por qué no usarlo también para buscar el elemento del checkbox? O por lo menos para buscar el formulario, porque desde luego tampoco es buena idea usar .forms[0] con el 0 puesto ahí a pelo. Por aquello de que si añades otro formulario antes ya pasa a ser .forms[1] y tienes que modificarlo.

Claro que al código original se le pueden sugerir miles de mejoras...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar