Javascript 如果条件返回false,则重复随机元素
我正在创建一个测验,其中出现一个随机生成的对象属性(object.name),用户输入一个文本值以匹配关联的对象属性(object.number)。我让我的函数工作(当值匹配时返回“正确”,当值不匹配时返回“不正确”),但我希望问题重复,直到用户得到正确的答案。现在,即使用户输入了不正确的值,也会随机生成一个新问题。您能否帮助我组织此问题,使其重复相同的问题,直到用户输入匹配的属性值Javascript 如果条件返回false,则重复随机元素,javascript,function,random,Javascript,Function,Random,我正在创建一个测验,其中出现一个随机生成的对象属性(object.name),用户输入一个文本值以匹配关联的对象属性(object.number)。我让我的函数工作(当值匹配时返回“正确”,当值不匹配时返回“不正确”),但我希望问题重复,直到用户得到正确的答案。现在,即使用户输入了不正确的值,也会随机生成一个新问题。您能否帮助我组织此问题,使其重复相同的问题,直到用户输入匹配的属性值 <body> <h3 id="randThing"></h3> <f
<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>
验证
函数对象(名称、值)
{
this.name=name;
这个。值=值;
}
var car=新对象(“car”、“50333”);
var desk=新对象(“desk”,“10420”);
var monkey=新对象(“monkey”,“11450”);
变量a=[汽车、办公桌、猴子];
var randomValue=a[Math.floor(a.length*Math.random())];
var specificThing=随机值;
document.getElementById(“randThing”).innerHTML=specificThing.name;
var specifithingvalue=specifithing.value;
函数compareAnswer()
{
var x=document.getElementById(“userIndexInput”).value;
如果(x==specificThingValue)
{
警惕(“正确!”);
document.getElementById(“randThing”).innerHTML=randomValue;
}
其他的
{
警告(“再试一次!”);
//直到x==specificThingValue之前,不知道要在这里放置什么来再次生成相同的specificThing
}
};
你所做的一切都很好。我想你被随机值
和特定值
弄糊涂了
这里有一个简单的方法来实现你想要的
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!");
}
};
只是需要稍微更改一下变量名。如果您希望看到这一点,这里有一把小提琴。谢谢您的帮助!这很有效……但是。我遗漏了一部分代码,我现在意识到这是我的问题:我正在使用,我想这是在放弃它。如果有任何关于绕过它的建议,我将不胜感激!!这一点:我也不确定我是否需要f这也会把它扔掉。我将首先研究事件和事件处理程序,看看这是否是问题所在。@user2760073更新了小提琴,请检查。如果这对您有帮助,请随时接受upvote并接受此答案。谢谢,工作非常完美!!!只需一个问题:我使用的变量名会把它搞糟吗?我接受了您的工作ng代码,将变量名称更改为我想要的名称(如'doc'和'this.index=index'),但它不起作用???我改回了您的名称,它起作用了!也许我只是错过了一个细微的更改或什么……好吧,所以我得到的“值”不仅仅是变量文本,它显然是某个地方需要的。我会找到它的。谢谢!!