2017-11-13 2 views
1

복권 게임을 만들어야합니다. 나는 전체 코드가 어떻게되어야하는지에 대한 아이디어를 가지고 있지만 대부분 문제가있다 :Comprobating 기능이 작동하지 않습니다.

generar()이라는 onclick이있는이 함수는 3 개의 숫자를 그려야한다. 1에서 999까지의 숫자를 만들고 세 개의 숫자와 함께 만드는 또 다른 단추를 누른 다음 다른 단추를 누른 다음 (새 단추) 이미 만든 번호로 새 번호를 확인하여 내가 이길 지 여부를 확인합니다.

그래, 나는 전체 코드를 관리했지만, 세 번째 숫자와 네 번째 숫자의 비교가 올바르게 작동하지 않습니다. 언제나 내가이기 든 안 했든간에, "Perdedor!"라고 쓰여있다. (느슨하게!). 누군가가 나를 왜 내가 실패하고 가능한 해결책을 말할 수있는 경우

<html> 
    <head> 
     <title>Práctica 3</title> 
     <style> 
      #contenedor { border: 1px black solid; 
        width: 250px; 
        height: 250px; 
        float: left; 
        margin-right: 5px; 
        text-align: center; 
        margin-bottom: 5px; } 
     </style> 
    </head> 

    <body> 
     <div id="contenedor"> <p id="primerNumero"/> </div> 
     <div id="contenedor"> <p id="segundoNumero"/> </div> 
     <div id="contenedor"> <p id="tercerNumero"/> </div> 
     <button id="generar" onclick="generar()">Genera dècims</button> 
     <div id="contenedor"> <p id="resultado"/> </div> 
     <p id="t"/> 

    <script> 
     function generar() { 
      var primerNumero = Math.floor(Math.random() * 10); 
      var segundoNumero = Math.floor(Math.random() * 10); 
      var tercerNumero = Math.floor(Math.random() * 10); 
      var botones = document.getElementsByTagName("BUTTON").length; 

      if (botones < 2) { 
       generarBotones(); 
      } 

      document.getElementById("primerNumero").innerHTML = primerNumero; 
      document.getElementById("primerNumero").style.fontSize = "72px"; 
      document.getElementById("segundoNumero").innerHTML = segundoNumero; 
      document.getElementById("segundoNumero").style.fontSize = "72px"; 
      document.getElementById("tercerNumero").innerHTML = tercerNumero; 
      document.getElementById("tercerNumero").style.fontSize = "72px"; 
     } 

     function generarBotones() { 
       var boton = document.createElement("BUTTON"); 
       var t = document.createTextNode("Realizar sorteig"); 
       boton.onclick = function(){ 
        var numeroGanador = Math.floor(Math.random() * 10); 
        document.getElementById("resultado").innerHTML = numeroGanador; 
        document.getElementById("resultado").style.fontSize = "72px"; 
        if(primerNumero == numeroGanador || segundoNumero == numeroGanador || tercerNumero == numeroGanador) { 
         document.getElementById("t").innerHTML = "¡Ganador!"; 
        } else { 
         document.getElementById("t").innerHTML = "¡Perdedor!"; 
        } 
       }; 
       boton.appendChild(t); 
       document.body.appendChild(boton); 
     } 
    </script> 

    </body> 
</html> 

것은, 그것은 잘 될 것입니다 :

내 코드입니다. 나는 설명은

+0

내 절대적으로 나쁨. 문제는 generarBotones()에 매개 변수로 변수를 지정하지 않아서 "primerNumero", "segundoNumero"및 "tercerNumero"를 사용하지 않는 것이 었습니다. 솔루션은 다음과 같습니다. if (botones <2) {generarBotones (primerNumero, segundoNumero, tercerNumero) {generarBotones(); } 및 generarBotones (primerNumero, segundoNumero, tercerNumero) 함수에서 {...}. 정말 미안해! –

+0

세 개의 변수와 단어로 된 이름을 가진 요소 대신에 num1, num2 등 숫자를 사용해보십시오. 즉, 거대한 코드 묶음을 복사하여 붙여 넣는 것보다는 반복 루프를 사용하여 반복 할 수 있습니다. 또한 여러 변수가있는 것을 피하기 위해 이러한 요소와 일대일 방식으로 값 배열을 연관시킬 수 있음을 의미합니다. – tadman

답변

1
primerNumero 
segundoNumero 
tercerNumero 

는 HTML 값을 얻을 수있는 요소 값이 아닌, innerText와 OR innerHTML을을 사용할 필요가 있습니까도 매우 감사 부여됩니다.

if(primerNumero.innerText == numeroGanador || segundoNumero.innerText == numeroGanador || tercerNumero.innerText == numeroGanador) { 
    document.getElementById("t").innerHTML = "¡Ganador!"; 
} else { 
    document.getElementById("t").innerHTML = "¡Perdedor!"; 
} 

또는 문제가 발생 숫자를 포함하는 변수는 HTML 요소의 ID와 이름이 같은 것을 때문에 당신은 요소의 다른 이름으로 변수의 이름을 바꿀 수 있습니다. 첫 번째 코드에 따라 이름이 바뀌면

+0

답변이 내 스레드에 대한 유효한 답변인지는 확실하지 않지만 어쨌든 해결했습니다. primerNumero, segundoNumero 및 tercerNumero는 generar() 함수에서 만들어지기 때문에 HTML 요소가 아니므로 실제로는 정수형 변수입니다. 적어도, 그렇게하려고 노력했습니다. 어쨌든 고마워요! –

+0

당신의 문제는 생성 된 숫자를 포함하는 변수가 html 요소의 id와 같은 이름이라는 것입니다. –

+0

당신의 요점을 봅니다. 고맙습니다! –