2016-10-05 4 views
0

Я пишу номер угадывая игру. Каждый раз, когда я запускаю документ, он автоматически переходит в мой внешний оператор else, и я знаю, почему, но я не могу понять, как заставить его ждать входного значения текстового поля. Я хочу установить «угадать» = значение текстового поля, нажав кнопку «Отправить», которая затем войдет в операторы if. В настоящий момент он автоматически устанавливает значение null и вызывает ошибку. Вот код.Как заставить документ ждать назначенного входного значения?

<head> 
     <title>Guessing Game</title> 
</head> 

<body> 
     <h1>Number Guessing Game</h1><br> 
     <button onclick = "search(1,100)">Press to play!</button> 
</body> 

<script type="text/javascript"> 

    var counter = 0; 
    var randomNumber = Math.floor(Math.random()*100+1); 
    function search(first, last){ 
       document.open(); 
       document.write("<h1>Number Guessing Game</h1><br>"); 
       document.write("<input id = 'guessBox' type = 'text'>&nbsp;"); 
       document.write("<input type = 'submit' id = 'submit' value = 'Submit'><br>"); 
       document.write("<h2>Numbers Left</h2>"); 
       for(var i = first; i <= last; i++){ 
        document.write(i + " "); 
       } 
       document.write("<br><br><h3>Number of tries: " + counter + "</h3>"); 
       document.close(); 
       var guess = document.getElementById('guessBox').value; 
       //var guess = prompt("Guess!"); 
       myguess = parseInt(guess); 
     if(myguess <= last && myguess >= first && cont == true){ 
      if(myguess == randomNumber){ 
       counter++; 
       if(counter <=3){ 
       alert("WOW, that was amazingly quick! You found it in " + counter + " tries."); 
       } 
       else if(counter < 6 && counter >= 4){ 
        alert("Not bad! You found it in " + counter + " tries."); 
       } 
       else if(counter < 10 && counter >= 6){ 
        alert("Ouch! You found it in " + counter + " tries."); 
       } 
       else{ 
        alert("Having a bad day aren't you? You found it in "+ counter + " tries"); 
       } 

      } 
      else if(myguess < randomNumber){ 
       first = myguess+1; 
       alert("Try again! The number is higher."); 
       counter++; 
       search(first, last); 
      } 
      else{ 
       last = myguess-1; 
       alert("Try again! The number is lower."); 
       counter++; 
       search(first, last);   
      } 
     } 
     else{ 
      alert("Invalid Number, try again."); 
      search(first, last); 
     } 
    } 

</script> 
+1

Использование document.write по тому же документу - плохая идея. – epascarello

+0

никогда не используйте document.write – AlFra

+0

Цените совет, но на самом деле он не ответил на вопрос. – Kevin

ответ

2

Вы пробовали отключить кнопку, а затем добавить событие OnChange в текстовое поле, так что вы можете включить кнопку один раз, у вас есть нужный вход? Вам нужно будет добавить идентификатор или имя к вашей кнопке, чтобы к ней можно было получить доступ? И добавить, что добавило @LGSon:

если (myguess < = последняя & & myguess> = первая & & прод == TRUE) {, проверив переменный прод, которую я не могу найти в вашем коде, так если он не объявлен и не установлен где-то, вы всегда будете использовать внешний маршрут.

Во-вторых, вам нужно разделить вашу функцию поиска в 2 функции, один, который генерирует входной сигнал, один, который работает, когда кто-то вошел значение (которое может быть уволен при нажатии клавиш или с помощью кнопки)

+0

Весь метод поиска автоматически вызывает, даже перед возможностью ввода текста. – Kevin

+0

оберните свой javascript в функцию, затем вызовите функцию из кнопки события click. –

+1

Вы были на полпути, обновите свой ответ с помощью суммы моих комментариев, и вы получите мой прогноз – LGSon

Смежные вопросы