显示警报消息的JavaScript

显示警报消息的JavaScript,javascript,Javascript,所以我试图让我的JavaScript Magic 8 ball显示一个alert()用户已询问过一次的消息。我知道我需要一个if/else语句,但不确定从哪里开始。当有人问我问题时,我有一切要正确显示的东西。只需要if/else语句 //为您的响应创建一个数组。记住,它是[0-14]。 风险值响应=[ “以后再问……”, “是的”, “不”, “看来是这样。”, “答复不清楚,请重试。”, “当然可以。”, “你到底想知道什么?”, “前景不错。”, “我的消息来源说没有。”, “符号指向是。

所以我试图让我的JavaScript Magic 8 ball显示一个
alert()用户已询问过一次的消息。我知道我需要一个
if/else
语句,但不确定从哪里开始。当有人问我问题时,我有一切要正确显示的东西。只需要
if/else
语句

//为您的响应创建一个数组。记住,它是[0-14]。
风险值响应=[
“以后再问……”,
“是的”,
“不”,
“看来是这样。”,
“答复不清楚,请重试。”,
“当然可以。”,
“你到底想知道什么?”,
“前景不错。”,
“我的消息来源说没有。”,
“符号指向是。”,
“别指望了!”,
“现在无法预测。”,
“在我看来,是的。”,
“最好现在不要告诉你。”,
“集中精神,再问一次”
]
//为用户的输入或问题创建变量。
var问题;
//显示输出。
document.getElementById(“提交”).onclick=function(){
问题=回答[Math.floor(Math.random()*responses.length)];
document.getElementById(“答案”).innerHTML=问题;
};
Magic 8球
你想知道什么



问8号球

8号球说:

如果不想重复问题 您需要做的是设置另一个数组(在我的示例中,
alreadyAsked
),然后每次收到特定问题时,将问题推送到该数组

要抓住所问的问题,您需要使用
question=document.getElementsByName('askme')[0]作为元素的目标。需要
[0]
,因为返回对象的节点列表集合。请注意,此声明必须出现在click事件的内部,因为问题将在页面加载后更改

然后用
if(alreadyAsked.indexOf(question)>=0){}
检查问题是否已经在这个辅助数组中。请注意,在执行此检查后,您需要推送到数组,否则问题将始终在数组中

使用辅助数组可以检查以前是否遇到过任何问题,而不仅仅是前面的问题(如
if(question)

您现有的代码片段将随机答案选择定义为
question
,但我已将其更改为
answer
(实际上就是这样)。我已经调用了用户的输入
问题
。请注意,`else条件已更新,以反映这一新的命名约定

//为您的响应创建一个数组。记住,它是[0-14]。
风险值响应=[
“以后再问……”,
“是的”,
“不”,
“看来是这样。”,
“答复不清楚,请重试。”,
“当然可以。”,
“你到底想知道什么?”,
“前景不错。”,
“我的消息来源说没有。”,
“符号指向是。”,
“别指望了!”,
“现在无法预测。”,
“在我看来,是的。”,
“最好现在不要告诉你。”,
“集中精神,再问一次”
];
//为已经提出的问题设置辅助数组。
var-alreadyAsked=[];
//为用户的输入或问题创建变量。
var问题;
//显示输出。
document.getElementById(“提交”).onclick=function(){
问题=document.getElementsByName('askme')[0]。值;
回答=回答[Math.floor(Math.random()*responses.length)];
如果(alreadyAsked.indexOf(问题)>=0){
警惕('你试图说“+question+”,但你已经问过了!');
}否则{
document.getElementById(“answer”).innerHTML=answer;
}
推(问题);
};
Magic 8球
你想知道什么



问8号球

8号球说:

伙计,我想这会更疯狂。我想得太多了,哈哈。谢谢!但看起来当我问这个问题时,它仍然会一直回答这个问题,直到有足够的时间它最终提示警报框。这不是预期的行为吗?你会得到一个回应,除非这个回应在过去的某个时候已经给出了?如果尚未给出响应,则应该允许,对吗?考虑到有多个可能的答案,可能需要一些随机有效的答案,直到出现重复。哦,我明白你的意思。我在寻找,如果用户已经问过一次问题,它会说“你已经问过了”,直到用户改变问题。啊,我完全明白了,哈哈。请耐心等待几分钟,我将更新答案以解决此问题:)@Eric--我已更新了答案以涵盖此问题:)
if (question) {
  alert("already asked");
} else {
  // existing logic here
}