2013-09-09 6 views
-1

Я создаю викторину, где появляется случайное свойство объекта (object.name), и пользователи вводят текстовое значение в соответствии со свойством связанного объекта (object.number). У меня есть моя функция (возвращается «Исправить», когда значения совпадают, «Неправильно, когда они этого не делают»), но я хочу, чтобы вопрос повторялся до тех пор, пока пользователь не вернет правильный ответ. Прямо сейчас, даже если пользователь вводит неверное значение, случайным образом генерирует новый вопрос. вы можете мне помочь структурировать это так повторяется один и тот же вопрос, пока пользователь не вводит соответствующее значение свойства?Повторить случайный элемент, если условие возвращает false

<body> 
<h3 id="randThing"></h3> 

<form name="userInputForm"> 

<input type="text" id="userIndexInput"></form> 

<button type="button" id="enter" onClick="compareAnswer()">Validate</button> 

<script type="text/javascript"> 

function object(name, value) 
{ 
this.name=name; 
this.value=value; 
} 
var car=new object("Car","50333"); 
var desk=new object("Desk","10420"); 
var monkey=new object("Monkey","11450"); 

var a = [car,desk,monkey]; 
var randomValue = a[Math.floor(a.length * Math.random())]; 

var specificThing = randomValue; 
document.getElementById("randThing").innerHTML=specificThing.name; 
var specificThingValue = specificThing.value; 

function compareAnswer() 
{ 

    var x = document.getElementById("userIndexInput").value; 
    if (x === specificThingValue) 
    { 
     alert("Correct!"); 
     document.getElementById("randThing").innerHTML=randomValue; 
    } 
else 
    { 
    alert("Try Again!"); 
    //don't know what to put here to make same the same specificThing generate again until x === specificThingValue 
    } 
}; 



</script> 

ответ

0

то, что вы сделали очень много хорошо. Я думаю, что вы запутались с randomValue и specificValue.

Вот простой способ добиться того, что вы хотите.

function QuestionObject(name, value) 
{ 
    this.name=name; 
    this.value=value; 
} 
var car   = new QuestionObject("Car","50333"); 
var desk  = new QuestionObject("Desk","10420"); 
var monkey  = new QuestionObject("Monkey","11450"); 
var Questions = [car, desk, monkey]; 
var randomValue; 

function generateQuestion() 
{ 
    document.getElementById("userIndexInput").value = ""; 
    randomValue = Questions[Math.floor(Questions.length * Math.random())]; 
    document.getElementById("randThing").innerHTML=randomValue.name; 
} 

generateQuestion(); 

function compareAnswer() 
{ 
    var x = document.getElementById("userIndexInput").value; 
    if (x === randomValue.value) 
    { 
     alert("Correct!"); 
     generateQuestion(); 
    } 
    else 
    { 
     alert("Try Again!"); 
    } 
}; 

Просто нужно было немного изменить имена переменных. Вот скрипка, если вы хотите увидеть это в действии http://jsfiddle.net/RR2h4/3/.

+0

Спасибо за помощь! Это сработало ... НО. Я оставил часть кода, который, как я понимаю, теперь является моей проблемой: я использую , и я думаю, что это отбрасывает его. Любые предложения о том, чтобы обойти это, и я был бы благодарен !! – user2760073

+0

Это тоже: Я не уверен, тоже выбросил бы его. Сначала я расскажу о событиях и обработчиках событий и посмотрю, в этом проблема. – user2760073

+0

@ user2760073 Обновлен скрипка, пожалуйста, проверьте. Не стесняйтесь принимать upvote и принимать этот ответ, если это вам поможет. http://meta.stackexchange.com/a/5235 – thefourtheye

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