使用CF/Javascript/HTML将数据库中MC答案的显示顺序随机化

使用CF/Javascript/HTML将数据库中MC答案的显示顺序随机化,javascript,html,coldfusion,multiple-choice,Javascript,Html,Coldfusion,Multiple Choice,今天,我正在尝试使用ColdFusion、HTML和Javascript改进一个Jeopardy风格的工作游戏。现在,游戏导航到一个问题页面,该页面显示问题以及一个答案框,供用户键入他们的回答。我们正试图将此改为选择题测验 我想实现的主要目标是以随机顺序显示三个可能的答案。游戏从中提取的数据库有4个与此相关的属性,如下所示: 麦丘问题 正确答案 MC_不正确答案1 MC_不正确答案2 我希望问题页面/弹出窗口显示: 麦丘问题 随机选择的回答者1 随机选择答案2 随机选择答案3 提交按钮 我已

今天,我正在尝试使用ColdFusion、HTML和Javascript改进一个Jeopardy风格的工作游戏。现在,游戏导航到一个问题页面,该页面显示问题以及一个答案框,供用户键入他们的回答。我们正试图将此改为选择题测验

我想实现的主要目标是以随机顺序显示三个可能的答案。游戏从中提取的数据库有4个与此相关的属性,如下所示:

麦丘问题

正确答案

MC_不正确答案1

MC_不正确答案2

我希望问题页面/弹出窗口显示:


麦丘问题

随机选择的回答者1

随机选择答案2

随机选择答案3

提交按钮


我已经用一些随机生成的数字创建了一个小小的html,这可能会让你更好地了解我的意图

<HTML>
<HEAD>
<TITLE>Question</TITLE>
<script>
    var num=Math.floor(Math.random()*3); 

    var num1=Math.floor(Math.random()*3); 
    do{
    num1=Math.floor(Math.random()*3); 
    }while (num == num1) 

    var num2=Math.floor(Math.random()*3); 
    do{
    num2=Math.floor(Math.random()*3); 
    }while (num == num2 || num1 == num2)
</script>
</HEAD>
<BODY>
<H1>Question here!</H1>
<P>
<FORM>
    <INPUT type="radio" name = "Answer" value="num" />
    <script>document.write("Answer " + num);</script><br />

    <INPUT type="radio" name = "Answer" value="num1" />
    <script>document.write("Answer " + num1);</script><br />

    <INPUT type="radio" name = "Answer" value="num2" />
    <script>document.write("Answer " + num2);</script><br />
    <br>
    <input type="submit" value="Submit" />
</FORM>
</BODY>
</HTML>

问题:
var num=Math.floor(Math.random()*3);
var num1=Math.floor(Math.random()*3);
做{
num1=数学地板(数学随机()*3);
}while(num==num1)
var num2=Math.floor(Math.random()*3);
做{
num2=数学地板(数学随机()*3);
}而(num==num2 | | num1==num2)
问题在这里!

文件。写入(“回答”+num)
文件。填写(“回答”+num1)
文件。填写(“回答”+num2)

我的问题是:我如何将数据库中的答案与随机生成的数字联系起来,以混淆答案?在上面的示例代码中,答案0将等于MC_CorrectAnswer,而答案1和2将是不正确的答案。稍后我会担心提交的东西等-现在我只希望表单显示从数据库中提取的问题和答案

我对Javascript和CF非常陌生,非常感谢您的任何意见。如果我完全错了,请告诉我

我还看了一下这个问题,为了解决这个问题,我想说,我很高兴为答案创建一个单独的表格,如果必要的话,带有错误/正确的标志,等等,但我在这里真正要寻找的是前端代码和逻辑,可以将我在页面上的问题随机化。后端产品甚至还不存在


非常感谢您的时间和专业知识

使用
java.util.Collections.shuffle(列表)


问题在这里!

#答案。答案[rowNumber]#

orangepips解决方案应该可以正常工作。或者,您可以随机选择答案。具体操作方式取决于您使用的数据库。

非常感谢!我会仔细看一看,尽我最大的努力完全理解正在发生的一切,但我真的很感谢你花时间回答!
<!--- simulate a database <cfquery>SELECT id, answer FROM answers</cfquery> call --->
<cfset answers = QueryNew("id,answer","integer,varchar")>
<cfloop from="1" to="3" index="idx">
    <cfset queryAddRow(answers)>
    <cfset querySetCell(answers, "id", idx)>
    <cfset querySetCell(answers, "answer", "Answer #idx#")>
</cfloop>

<cfset rownumbers = []>
<cfloop from="1" to="#answers.recordcount#" index="rowNumber">
    <cfset arrayAppend(rowNumbers, rowNumber)>
</cfloop>

<cfset createObject("java", "java.util.Collections").shuffle(rowNumbers)>

<cfdump var="#rowNumbers#">

<cfoutput>
<body>
<h1>Question here!</h1>
<p>
<form>
    <cfloop array="#rowNumbers#" index="rowNumber">
        <input type="radio" name="answerId" value="#answers.id[rowNumber]#" />#answers.answer[rowNumber]#<br />
    </cfloop>
</form>
</body>
</cfoutput>