Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果条件返回false,则重复随机元素_Javascript_Function_Random - Fatal编程技术网

Javascript 如果条件返回false,则重复随机元素

Javascript 如果条件返回false,则重复随机元素,javascript,function,random,Javascript,Function,Random,我正在创建一个测验,其中出现一个随机生成的对象属性(object.name),用户输入一个文本值以匹配关联的对象属性(object.number)。我让我的函数工作(当值匹配时返回“正确”,当值不匹配时返回“不正确”),但我希望问题重复,直到用户得到正确的答案。现在,即使用户输入了不正确的值,也会随机生成一个新问题。您能否帮助我组织此问题,使其重复相同的问题,直到用户输入匹配的属性值 <body> <h3 id="randThing"></h3> <f

我正在创建一个测验,其中出现一个随机生成的对象属性(object.name),用户输入一个文本值以匹配关联的对象属性(object.number)。我让我的函数工作(当值匹配时返回“正确”,当值不匹配时返回“不正确”),但我希望问题重复,直到用户得到正确的答案。现在,即使用户输入了不正确的值,也会随机生成一个新问题。您能否帮助我组织此问题,使其重复相同的问题,直到用户输入匹配的属性值

<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'),但它不起作用???我改回了您的名称,它起作用了!也许我只是错过了一个细微的更改或什么……好吧,所以我得到的“值”不仅仅是变量文本,它显然是某个地方需要的。我会找到它的。谢谢!!