Javascript setInterval函数console.log中的单击事件双击(有时三次)单击事件

Javascript setInterval函数console.log中的单击事件双击(有时三次)单击事件,javascript,jquery,Javascript,Jquery,第一次问问题,请容忍我。非常感谢你的帮助 我的代码如下所示。我正在尝试创建一个琐事游戏 我的问题是,当我运行代码时,有时每次单击都会注册两个或多个单击事件。我做了一些研究,我认为对此的解释是因为我将多个事件侦听器绑定到同一个div区域,它的计数是附加到它的事件侦听器的两倍和三倍。但我不知道这是在哪里发生的,为什么会发生 //设置全局变量和对象。 var博弈=[ [ “Daenarys Targaryen最终是如何孵化龙蛋的?”、[“1.在闪电风暴中”、“2.在葬礼柴堆中”、“3.在壁炉中”、“

第一次问问题,请容忍我。非常感谢你的帮助

我的代码如下所示。我正在尝试创建一个琐事游戏

我的问题是,当我运行代码时,有时每次单击都会注册两个或多个单击事件。我做了一些研究,我认为对此的解释是因为我将多个事件侦听器绑定到同一个div区域,它的计数是附加到它的事件侦听器的两倍和三倍。但我不知道这是在哪里发生的,为什么会发生

//设置全局变量和对象。
var博弈=[
[
“Daenarys Targaryen最终是如何孵化龙蛋的?”、[“1.在闪电风暴中”、“2.在葬礼柴堆中”、“3.在壁炉中”、“4.在冰冻的洞穴中”],
“2.在葬礼的柴堆上”,
“资产/图像/q1”,
],
[
“Valar Morghulis”或“所有人都必须死”这一短语通常用“,[“1.Valar Dohaeris或“所有人都必须服务”,“2.Valar Rohnas或“所有人都必须活着”,“3.Valar GoGo或“所有人都必须跳舞”,“4.Valar Morghulis或“所有人都必须战斗”,
“1.Valar Dohaeris或‘所有人都必须服务’”,
“资产/图像/q2”,
],
[
“唯一能扑灭挥发性野火的东西是什么?”、[“1.沙子”、“2.水”、“3.龙血”、“4.阳光”],
“1.沙子”,
“资产/图像/q3”,
],
[
“除了龙玻璃,还有什么物质能够打败白步行者?”、[“1.魏尔伍德”、“2.野火”、“3.瓦莱里亚钢铁”、“4.岩浆”],
“3.瓦莱里亚钢铁公司”,
“资产/图像/q4”,
],
[
“雅利雅对盗取众面神的惩罚是:”,[“1.死亡”,“2.失忆”,“3.失明”,“4.断臂”],
“3.失明”,
“资产/图像/q5”,
],
[
“奈德·斯塔克的巨剑叫什么名字?”,[“1.燕麦保管员”,“2.死亡使者”,“3.北方守卫”,“4.冰”],
“4.冰”,
“资产/图像/q6”,
],
[
“谁射出了燃烧的箭,随后摧毁了黑水湾的斯坦尼斯舰队?”,[“1.提利昂·兰尼斯特”,“2.乔弗里国王”,“3.詹姆·兰尼斯特”,“4.布隆”],
“4.布隆”,
“资产/图像/q7”,
],
[
“奥贝林·马泰尔王子因其战斗和:“,[“1.以先抽血为荣”,“2.对毒药的了解”,“3.夜间攻击”,“4.红宝石色盔甲”而被昵称为“红毒蛇”,
“2.毒药知识”,
“资产/图像/q8”,
],
[
“夜王是用一把匕首创造出来的,匕首由以下材料制成:”,[“1.蓝色冰”,“2.瓦莱里亚钢铁”,“3.龙玻璃”,“4.黑曜石”],
“3.龙玻璃”,
“资产/图像/q9”,
],
[
“拉姆齐·博尔顿向里肯·斯塔克射出了多少支箭?”、[“1.3”、“2.4”、“3.5”、“4.6”],
“2.四个”,
“资产/图像/q10”,
],
]
var b=$.extend(true,[],game);
var-qCountdown;
var ans;
var计数器;
$(文档).ready(函数(){
var=0;
var=0;
未回答的var=0;
var按钮=$(“.optBtn”);
var start=$(“#startBtn”);
var问题=$(“#问题”);
var answer=$(“#answer”);
变量倒计时=$(“#超时”);
var期权;
var qCounter=0;
//在游戏开始前隐藏某些HTML元素。
按钮隐藏();
//启动新游戏功能。
函数newGame(){
nextQuestion();
}
//启动下一个查询功能。
函数nextQuestion(){
倒计时;
show()问题;
按钮。显示();
start.hide();
答案为空();
//设置结束条件以显示结果页面。
如果(qCounter!==10){
测试()
//设置计数器是否达到0的条件并显示。
计数器=10;
qCountdown=setInterval(函数(){
计数器--;
倒计时。文本(计数器);
如果(计数器==0){
b、 移位();
清除间隔(qCountdown);
倒计时。隐藏();
按钮隐藏();
控制台日志(qCounter+“TimeUp”);
console.log(b.length+“TimeUp”);
文本(“正确答案为“+ans+”);
$(“#未回答”).text(“哦,你没有及时回答问题。”);
未回答的++;
qCounter++;
设置超时(nextQuestion,2000);
返回;
}
}, 1000);
}否则{
b=$.extend(true,[],game);
倒计时。隐藏();
问题。隐藏();
按钮隐藏();
start.show();
清除间隔(qCountdown);
文本(“你猜对了“+正确+”问题,猜错了“+错误+”问题”);
var unans=$(“未回答”);
文本(“您没有回答”+未回答+“问题”);
返回;
};
var quest=question.text(b[0][0]);
ans=b[0][2];
var-img;
//console.log();
//为每个选项按钮指定四个选项中的一个。
对于(i=0;i<4;i++){
基站={
生成器:函数(){
返回b[0][1][i];
}
};
按钮。每个(函数(){
$(this.text(btns.generator());
$(this.attr(“数据值”,btns.generator());
i++;
});
}
};
功能测试(){
//单击按钮以注册正确或错误猜测的功能。
按钮。打开(“单击”,函数(){
按钮隐藏();
log(“您单击了一次按钮”);
选项=$(this.attr(“数据值”);
倒计时。隐藏();
问题。隐藏();
清除间隔(qCountdown);
设置超时(nextQuestion,2000);
qCounter++;
b、 移位();
如果(选项===ans){
console.log(qCounter+“单击”);
console.log(b.length+“Click”);
文本(“你猜对了,答案是“+ans”);
正确的++;
按钮。关闭(“单击”);
返回;
}否则{
控制台日志(计数器+咔嗒声);
控制台日志(b.长度+咔嗒声);
文本(“你猜错了,答案是“+ans”);