2012-03-08 2 views
-1

Я написал функцию, которая должна (1) генерировать случайное число, (2) судить пользователя для этого числа и (3) отслеживать попытки пользователя.Ошибка JavaScript Increment Issue

Первые два шага выполнены, но у меня возникают проблемы с (3), отслеживая попытки пользователя.

function randNum(){ 
     var num = Math.floor(Math.random()*(100)+1); 
     var usrGuess = document.forms.guess.visitor.value; 
     var attempt = 0; 

     if (usrGuess != num){ 
      if ((usrGuess < 1) || (usrGuess > 100)) 
       document.getElementById("wizard").innerHTML = "Fool! This number isn't even part of the set!"; 
      else if (usrGuess > num) 
       document.getElementById("wizard").innerHTML = "Wrong, fool! This is greater than my number! I was thinking of " + num + "!"; 
      else if (usrGuess < num) 
       document.getElementById("wizard").innerHTML = "Wrong, fool! This is less than my number! I was thinking of " + num + "!"; 

      attempt += 1; // Here's the change. 
      alert(attempt); // Here's the output. It doesn't change. 
     } 
     else if (usrGuess == num){ 
      if (attempt <= 5) 
       document.getElementById("wizard").innerHTML = "Right... fool. You only guessed in " + attempt + " tries."; 
      else if ((attempt <= 10) && (attempt > 5)) 
       document.getElementById("wizard").innerHTML = "Right, fool. You only after " + attempt + " tries."; 
      else if (attempt > 10) 
       document.getElementById("wizard").innerHTML = "Haha, fool! You finally guessed after " + attempt + " tries.<br />Go wallow in your lost time."; 
     } 
    } 

По какой-то причине, даже если я помещаю «попытку» в качестве внешнего параметра, номер отслеживает только одну попытку.

У кого-нибудь есть решение?

ответ

4

Вы объявляете «попытку» как локальную переменную. Он будет повторно инициализирован каждый раз, когда вы вызываете функцию.

Вы также сделать новое случайное число на каждом вызове функции, которая, кажется, немного среднее :-)

Объявите переменные вне функции и посмотреть, как она идет. (Однако держите «usrGuess» внутри, просто двигайте «num» и «пытайтесь».)

0

У вас есть var attempt = 0 внутри функции. Каждый раз, когда вы вызываете эту функцию, она устанавливает attempt в 0. Объявите attempt вне функции и посмотрите, как это работает для вас.

Кроме того, я предпочитаю следующие обозначения для приращения: attempt++;

+0

Ну, я чувствую себя глупо. Я думаю о С и помещаю «попытку» в качестве параметра для randNum. Убирание прамераметра заставляет его работать (хотя я не совсем уверен, почему). – Pori

+0

Спасибо за помощь. – Pori