Javascript数组显示
我是JavaScript新手,决定创建自己的JS测试 以下是我目前掌握的情况:Javascript数组显示,javascript,arrays,Javascript,Arrays,我是JavaScript新手,决定创建自己的JS测试 以下是我目前掌握的情况: <script type="text/javascript"> score = 0; var questions = [['whats 2 + 2' , '4'] , ['whats 3 * 3' , 9] , ['whats 2 * 7' , 14] ]; function askQ(ans){ var answer =prompt (questions[i]
<script type="text/javascript">
score = 0;
var questions = [['whats 2 + 2' , '4'] , ['whats 3 * 3' , 9] , ['whats 2 * 7' , 14] ];
function askQ(ans){
var answer =prompt (questions[i] , '');
if(answer == questions[1]){
score++;
alert('Yahooo , ur right');
} else{
alert('Brush up ur GK');
}
}
for (var i = 0; i < questions.length ; i++) {
askQ(questions[i]);
};
</script>
得分=0;
变量问题=['whats 2+2','4'],['whats 3*3',9],'whats 2*7',14];
函数askQ(ans){
var回答=提示(问题[i],'';
如果(答案==问题[1]){
分数++;
警惕(“你的右边是Yahooo”);
}否则{
警惕(“刷上你的GK”);
}
}
对于(var i=0;i
问题是当问题“提示”到用户屏幕时,答案也同时显示,例如。对于第一个问题,如下所示:
“什么是2+2,4”。。现在你看,“4”是答案
我确信为了不让4显示出来,我需要做一些不同的事情,所以我在网上浏览了一些代码片段,这些代码要么太复杂,让我无法理解
这里有一个。注意,您正在将
ans
传递到函数中(该函数方便地包含问答对),但实际上您并没有在任何地方使用它
该行:
var answer =prompt (questions[i] , '');
应该是:
var answer = prompt(ans[0], ''); // Display the question
if(answer == ans[1]) { // Compare answer to correct answer
这句话:
if(answer == questions[1]){
应该是:
var answer = prompt(ans[0], ''); // Display the question
if(answer == ans[1]) { // Compare answer to correct answer
此外,最好将所有答案存储为字符串而不是数字,因为您要将它们与用户输入的字符串进行比较<代码>['whats 3*3',9]应该是['whats 3*3',9']
更好的设计还可以是使用JavaScript对象文本来存储问答对。比如:
var questions = [
{Question: 'whats 2 + 2', Answer: '4'},
{Question: 'whats 3 * 3', Answer: '9'},
{Question: 'whats 2 * 7', Answer: '14'}
];
然后,您可以将代码更改为:
var answer = prompt(ans.Question, ''); // Display the question
以及:
这更容易阅读。应该是:
<script type="text/javascript">
score = 0;
var questions = [['whats 2 + 2' , '4'] , ['whats 3 * 3' , 9] , ['whats 2 * 7' , 14] ];
function askQ(ans){
var answer =prompt (ans[0] , '');
if(answer == ans[1]){
score++;
alert('Yahooo , ur right');
} else{
alert('Brush up ur GK');
}
}
for (var i = 0; i < questions.length ; i++) {
askQ(questions[i]);
};
</script>
是的
因为您必须实际使用传递的参数ans及其第一个值
而不是
var answer =prompt (questions[0] , '');
if(answer == questions[1]){
是的
出于与上述相同的原因,但有第二个值。
问题[i]
是一个由两个元素组成的数组。您想在提示符中显示问题[i][0]
,并将答案与问题[i][1]
进行比较。这与OP的代码有什么不同?“教一个人钓鱼…”这是一个非常聪明的方法,迈克,我是说你回答的最后一部分,你做“var-answer=prompt(ans.Question)”;,顺便说一句,是的,到目前为止,即使你把问题“what is 2+2”回答为4,它也会把它标记为错误,因为从提示中接受的值是一个“字符串”虽然数组中的是一个“Int”(不确定!但我认为这是对的),但你建议Mike将数组中的“Int”转换为字符串,但我实际上希望的是,一旦用户在提示符中输入答案,我会将其转换为Int。你可以使用。如果用户输入的数字无效,您可能需要执行某种类型的错误检查代码。该代码现在可以正常工作,但尚未执行您关于检查用户是否输入了数字以外的内容的建议。它不使用parseInt就可以工作。小提琴在这儿
if(answer == ans[1]){