Problema con Cuestionario en javascript

Iniciado por Bard44, 3 Enero 2018, 05:49 AM

0 Miembros y 1 Visitante están viendo este tema.

Bard44

Buenas Noches, tengo un problema con un cuestionario que estoy realizando en javascript, el problema es que tengo 10 preguntas de selección única usando un input type=radio, con 4 respuestas a escoger, esas 10 si funcionan perfectamente y van sumando para al final desplegar una nota, pero al agregar una pregunta de respuesta corta usando un input type=text que sería la 11 esa no funciona, de hecho al dar el botón de= Responder, toma la respuesta como incorrecta y lo que quiero lograr es que siga sumando esa respuesta obviamente si es correcta con el resto pero no se donde estoy fallando, les agradecería la ayuda, muchas gracias.

Este es el código en html:

Código (html4strict) [Seleccionar]
<!doctype html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/estilo.css">
<script src="js/Proyecto.js"></script>

</head>
<body>
<header class="div1">
<p class="p1">CUESTIONARIO</p></header>

<form>

<label class="label">Pregunta 1</label>


<input type=radio value="a" onClick="Engine(1, this.value)">Rehacer, reciclar, reponer

<input type=radio value="b" onClick="Engine(1, this.value)">Reutilizar, reciclar, reducir

<input type=radio value="c" onClick="Engine(1, this.value)">Reducir, recoger, renacer

<input type=radio value="d" onClick="Engine(1, this.value)">Rehacer, renovar, retornar<p>

<label class="label">Pregunta 2</label>


<input type=radio value="a" onClick="Engine(2, this.value)">10 años

<input type=radio value="b" onClick="Engine(2, this.value)">20 años

<input type=radio value="c" onClick="Engine(2, this.value)">700 años

<input type=radio value="d" onClick="Engine(2, this.value)">200 años<p>

<label class="label">Pregunta 3</label>


<input type=radio value="a" onClick="Engine(3, this.value)">500 años

<input type=radio value="b" onClick="Engine(3, this.value)">1000 años

<input type=radio value="c" onClick="Engine(3, this.value)">5 años

<input type=radio value="d" onClick="Engine(3, this.value)">300 años<p>

<label class="label">Pregunta 4</label>


<input type=radio value="a" onClick="Engine(4, this.value)">450 años

<input type=radio value="b" onClick="Engine(4, this.value)">10 años

<input type=radio value="c" onClick="Engine(4, this.value)">500 años

<input type=radio value="d" onClick="Engine(4, this.value)">80 años<p>

<label class="label">Pregunta 5</label>


<input type=radio value="a" onClick="Engine(5, this.value)">4 años

<input type=radio value="b" onClick="Engine(5, this.value)">100 años

<input type=radio value="c" onClick="Engine(5, this.value)">Nunca

<input type=radio value="d" onClick="Engine(5, this.value)">350 años<p>

<label class="label">Pregunta 6</label>


<input type=radio value="a" onClick="Engine(6, this.value)">5

<input type=radio value="b" onClick="Engine(6, this.value)">4

<input type=radio value="c" onClick="Engine(6, this.value)">2

<input type=radio value="d" onClick="Engine(6, this.value)">10<p>

<label class="label">Pregunta 7</label>


<input type=radio value="a" onClick="Engine(7, this.value)">Rojo

<input type=radio value="b" onClick="Engine(7, this.value)">Negro

<input type=radio value="c" onClick="Engine(7, this.value)">Azul

<input type=radio value="d" onClick="Engine(7, this.value)">Verde<p>

<label class="label">Pregunta 8</label>


<input type=radio value="a" onClick="Engine(8, this.value)">Amarillo

<input type=radio value="b" onClick="Engine(8, this.value)">Verde

<input type=radio value="c" onClick="Engine(8, this.value)">Azul

<input type=radio value="d" onClick="Engine(8, this.value)">Negro<p>

<label class="label">Pregunta 9</label>


<input type=radio value="a" onClick="Engine(9, this.value)">Plástico

<input type=radio value="b" onClick="Engine(9, this.value)">Vidrio

<input type=radio value="c" onClick="Engine(9, this.value)">Restos de verduras y frutas

<input type=radio value="d" onClick="Engine(9, this.value)">Restos de carne<p>

<label class="label">Pregunta 10</label>


<input type=radio value="a" onClick="Engine(10, this.value)">Rojo

<input type=radio value="b" onClick="Engine(10, this.value)">Verde

<input type=radio value="c" onClick="Engine(10, this.value)">Amarillo

<input type=radio value="d" onClick="Engine(10, this.value)">Rosado<p>

<label class="label">11.    Escriba un ejemplo de papel que se puede reciclar: </label>
     <input class="input2" type="text"><button type=button onClick="Engine(11, this.value)">Responder</button>
<center>
<input type=button onClick="java()" value="Terminar">
</center>
</form>
<footer>
</footer>
</body>
</html>


Este es el código en javascript:

Código (javascript) [Seleccionar]
var ans = new Array;
var done = new Array;
var score = 0;

ans[1] = "b";
ans[2] = "c";
ans[3] = "a";
ans[4] = "d";
ans[5] = "c";
ans[6] = "b";
ans[7] = "b";
ans[8] = "b";
ans[9] = "c";
ans[10] = "c";
ans[11] = "papel";

function Engine(question, answer) {

    if (answer != ans[question]) {
        if (!done[question]) {
            done[question] = -1;
            alert("Error!\n\nTu puntaje por el momento es: " + score);
                }
        else {
            alert("Ya respondiste a esta pregunta!");
            }
        }
    else {
        if (!done[question]) {
            done[question] = -1;
            score++;
            alert("Respuesta Correcta!\n\nTu puntaje por el momento es: " + score);
                }
        else {       
            alert("Ya respondiste a esta pregunta");
            }
        }
}
       
function java () {
    if (score == 11) {
        alert("nota: 100");
        }
    if (score == 9) {
        alert("nota: 90");
        }
    if (score == 8) {
        alert("nota: 80");
        }
    if (score == 7) {
        alert("nota: 70");
        }
    if (score == 6) {
        alert("nota: 60");
        }
    if (score == 5) {
        alert("nota: 50");
        }
    if (score == 4) {
        alert("nota: 40");
        }
    if (score == 3) {
        alert("nota: 30");
        }
    if (score == 2) {
        alert("nota: 20");
        }
    if (score == 1) {
        alert("nota: 10");
        }
    if (score === 0) {
        alert("nota: 0");
        }
    if (score >= 7 &amp;&amp; score <= 12) {
        alert("Acceso permitido")
        }
    else {
        alert("No puedes seguir, necesitas al menos 7 buenas para continuar")
        }
}



Juan Enrique

Hola, creo que el problemas esta en que mandas el valor que tiene el botón y no el texto.

<input class="input2" type="text"><button type=button onClick="Engine(11, this.value)">Responder</button>

En ese trozo, creo que tendría que ser algo así en caso de respetar tu código y no modificarlo mucho:

<input class="input2" type="text"><button value="papel" type=button onClick="Engine(11, this.value)">Responder</button>

No se si llego tarde pero espero que te ayude  :D