Javascript函数赢得';I don’打了几次电话之后,我的工作就不像你想象的那样了

Javascript函数赢得';I don’打了几次电话之后,我的工作就不像你想象的那样了,javascript,html,Javascript,Html,我正在尝试构建这个应用程序,它将从两个数据数组中生成一个随机问题:国家和问题。因此,我想将该问题查询到HTML,然后用户通过文本输入回答该问题,然后检查答案是否正确。打了几次电话后,应用程序工作正常,但有时不会像设想的那样工作。。。例如:关于“罗马尼亚的首都是哪一个?”的问题,正确答案应该是“bucuresti”,但由于某种原因,我不明白通过该问题的正确答案实际上是“罗马尼亚”。我猜chechAnswer()函数中的if/else语句有问题 Array.prototype.random=函数(

我正在尝试构建这个应用程序,它将从两个数据数组中生成一个随机问题:
国家
问题
。因此,我想将该问题查询到HTML,然后用户通过文本输入回答该问题,然后检查答案是否正确。打了几次电话后,应用程序工作正常,但有时不会像设想的那样工作。。。例如:关于“罗马尼亚的首都是哪一个?”的问题,正确答案应该是“bucuresti”,但由于某种原因,我不明白通过该问题的正确答案实际上是“罗马尼亚”。我猜
chechAnswer()
函数中的
if/else
语句有问题

Array.prototype.random=函数(长度){
返回此[Math.floor(Math.random()*length)];
};
var国家=[
{姓名:“romaniei”,大写:“bucuresti”},
{名称:“保加利亚”,大写:“索非亚”}
],
问题=[
“关心埃斯特·卡皮塔拉”,
“艾斯特·卡皮塔拉·卡里·塔里?”
];
document.querySelector('input')。onclick=function(){
var q,
所选国家=国家。随机(国家。长度),
选择的问题=问题.随机(问题.长度);
cc=选定的国家;
cq=选择的问题;
如果(所选问题==问题[0]){
q=选择的问题+选择的国家名称+“?”;
}else if(选择的问题==问题[1]){
q=选定的国家/地区资本+选定的问题;
}
document.querySelector('#que').innerHTML=q;
document.getElementById(“btn”).disabled=true;
};
checkAnswer=函数(){
var intrebare;
var answer=document.myform.ans.value;
如果(cq==问题[0]&答案==抄送资本){
警惕(“corect”);
document.getElementById(“btn”).disabled=false;
}else if(cq==问题[1]&答案==抄送名称){
警惕(“corect”);
document.getElementById(“btn”).disabled=false;
}否则{
警惕(“不直接”);
}
};

Intrebare:

这是一个无效的布尔检查(或者,更确切地说,它不会执行您期望它执行的操作!):

那应该是

if(answer === cc.name || answer === cc.capital){
尽管有上述规定,您的逻辑仍然有点不正确,在选择问题时,您可以确定是否要将该地区或城市作为问题的一部分:

cc = chosen_country;
  if(chosen_question == questions[0]){
    q= chosen_question + chosen_country.name + "?";
  } else if(chosen_question == questions[1]){
    q=  chosen_country.capital + chosen_question;
  }
(旁白:上面的代码使得选择一个随机问题有点过时)


但是,在测试答案时,没有这样的检查,这意味着问题“romaniei的首都是什么”将接受答案“romaniei”或“bucuresti”。

您的
checkAnswer()
函数中的if语句有点不正确

它需要:

if(answer === cc.name || answer === cc.capital)
您当前的代码不会提供预期的结果


正确和不正确也拼写错误。

即使经过此修复,他的代码的逻辑似乎是错误的。如果问题是“罗马尼亚的首都是什么?”那么罗马尼亚的答案仍然是正确的!相反,他应该有一个单独的属性“correctAnswer”,他应该在方法中进行检查。这是否意味着“索菲亚”将被视为“索菲亚是哪个国家的首都”问题的正确答案?感觉上你可能想知道问了哪个问题(或者至少它的结构),以知道你是否应该对照姓名或大写字母进行核对。哦。。。我现在明白了。。。但我有一个问题,为什么在陈述的结尾使用double?是的。。。我的逻辑有点糟糕,我只是假设当被问及一个首都和一个国家时,用户只会输入一个大写名称。嗯,这是我讨厌编程的地方,因为它涉及很多逻辑,即使它们很简单,我只是有时候不擅长。我想到了一些要构建的GREAT应用程序,但我的大脑不会帮助我构建它们,因为正如你所看到的,我在构建时在简单的逻辑上失败了。我的登录会在学习过程中演变吗?@IulianConstantinRedinciuc-当我复制你的代码时,额外的
是一个错误。是的,通过实践,编程变得更容易;)@Jamiec-我对我的代码做了一些修改,所以我会先把问题作为论据,然后比较答案是否正确:)检查被剪掉的编辑代码。你帮了我很多,谢谢你,伙计!
if(answer === cc.name || answer === cc.capital)