- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
功能:
我正在尝试创建一个有 5 次尝试的测验,其中每个问题页面都是从每个类别中显示的随机问题。
因此,如果用户答对了每个问题,下一个问题将淡入,如果用户在 5 次尝试中有 3 次答对了 3 个问题,他们将被导航到 gameWin 页面。否则,如果用户已完成所有 5 次尝试,它会将用户导航到 GameOver 页面。
问题:
此时,在用户完成所有 5 次尝试后,以下错误消息显示在我的 console.log 中 => Uncaught RangeError: Maximum call stack size exceeded.
我想寻求帮助,以解决以下有关超出调用堆栈大小的问题。
代码:
function showQuestion() {
//Question list shown is more than 5, show game over
if (GamePage_question_list.length > 5) {
GameOver();
} else {
//Randomise Each Category Questions
//Randomise Category_A Question
random_Question_CategoryA = Math.floor(Math.random() * CategoryA_Questions.length);
//Randomise Category_B Question
random_Question_CategoryB = Math.floor(Math.random() * CategoryB_Questions.length);
//Randomise Category_C Question
random_Question_CategoryC = Math.floor(Math.random() * CategoryC_Questions.length);
//Randomise Category_D Question
random_Question_CategoryD = Math.floor(Math.random() * CategoryD_Questions.length);
//Display random question
random_Question = Math.floor(Math.random() * GameQuestion.length);
var exist = false;
for (i = 0; i < GamePage_question_list.length; i++) {
if (GamePage_question_list[i] == (random_Question_CategoryA + "")) {
exist = true;
} else if (GamePage_question_list[i] == (random_Question_CategoryB + "")) {
exist = true;
} else if (GamePage_question_list[i] == (random_Question_CategoryC + "")) {
exist = true;
} else if (GamePage_question_list[i] == (random_Question_CategoryD + "")) {
exist = true;
} else if (GamePage_question_list[i] == (random_Question + "")) {
exist = true;
}
}
Game_wait = false;
if (exist == false) {
//Display Question from each category after each question has been answered
if (GamePage_question_list.length == 0) {
console.log("Questions:" + CategoryA_Questions[random_Question_CategoryA]);
GamePage_question_list.push(random_Question_CategoryA + "");
$("#GamePage_question").html(CategoryA_Questions[random_Question_CategoryA]);
answerList = CategoryA_Answers[random_Question_CategoryA];
$("#GamePageAnswer_1").attr("src", answerList[0]);
$("#GamePageAnswer_2").attr("src", answerList[1]);
console.log("Answers:" + answerList);
} else if (GamePage_question_list.length == 1) {
GamePage_question_list.push(random_Question_CategoryB + "");
$("#GamePage_question").html(CategoryB_Questions[random_Question_CategoryB]);
answerList = CategoryB_Answers[random_Question_CategoryB];
$("#GamePageAnswer_1").attr("src", answerList[0]);
$("#GamePageAnswer_2").attr("src", answerList[1]);
} else if (GamePage_question_list.length == 2) {
GamePage_question_list.push(random_Question_CategoryC + "");
$("#GamePage_question").html(CategoryC_Questions[random_Question_CategoryC]);
answerList = CategoryC_Answers[random_Question_CategoryC];
$("#GamePageAnswer_1").attr("src", answerList[0]);
$("#GamePageAnswer_2").attr("src", answerList[1]);
} else if (GamePage_question_list.length == 3) {
GamePage_question_list.push(random_Question_CategoryD + "");
$("#GamePage_question").html(CategoryD_Questions[random_Question_CategoryD]);
answerList = CategoryD_Answers[random_Question_CategoryD];
$("#GamePageAnswer_1").attr("src", answerList[0]);
$("#GamePageAnswer_2").attr("src", answerList[1]);
} else if (GamePage_question_list.length == 4) {
GamePage_question_list.push(random_Question + "");
$("#GamePage_question").html(GameQuestion[random_Question]);
answerList = GameAnswer[random_Question];
$("#GamePageAnswer_1").attr("src", answerList[0]);
$("#GamePageAnswer_2").attr("src", answerList[1]);
}
} else {
showQuestion();
}
}
}
function select_answer(flag) {
if (Game_wait == false) {
Game_wait = true;
var currentQuestionIndex = GamePage_question_list[GamePage_question_list.length - 1];
var CategoryA_correctAnswer = CategoryA_CorrectAnswers[parseInt(currentQuestionIndex)];
var CategoryA_POPUP_Answer = CategoryA_PopUpAnswers[parseInt(currentQuestionIndex)];
var CategoryB_correctAnswer = CategoryB_CorrectAnswers[parseInt(currentQuestionIndex)];
var CategoryB_POPUP_Answer = CategoryB_PopUpAnswers[parseInt(currentQuestionIndex)];
var CategoryC_correctAnswer = CategoryC_CorrectAnswers[parseInt(currentQuestionIndex)];
var CategoryC_POPUP_Answer = CategoryC_PopUpAnswers[parseInt(currentQuestionIndex)];
var CategoryD_correctAnswer = CategoryD_CorrectAnswers[parseInt(currentQuestionIndex)];
var CategoryD_POPUP_Answer = CategoryD_PopUpAnswers[parseInt(currentQuestionIndex)];
var correctAnswer = GameCorrectAnswer[parseInt(currentQuestionIndex)];
var POPUP_Answer = GamePopUpAnswer[parseInt(currentQuestionIndex)];
console.log("flag_answer chosen:" + flag);
//Show the POPUP Correct answer
//THIS IS THE PART WHERE THE CORRECT ANSWER WILL SHOW IF THE USER ANSWERS EACH QUESTION WRONGLY
if (GamePage_question_list.length == 1) {
console.log("CategoryA_correctAnswer" + CategoryA_correctAnswer);
console.log("A");
} else if (GamePage_question_list.length == 2) {
console.log("CategoryB_correctAnswer" + CategoryB_correctAnswer);
console.log("B");
} else if (GamePage_question_list.length == 3) {
console.log("CategoryC_correctAnswer" + CategoryC_correctAnswer);
console.log("C");
} else if (GamePage_question_list.length == 4) {
console.log("CategoryD_correctAnswer" + CategoryD_correctAnswer);
console.log("D");
} else if (GamePage_question_list.length == 5) {
console.log("GameCorrectAnswer" + GameCorrectAnswer);
console.log("E");
}
}
}
function GameOver() {
idleTime = 0;
console.log("GameOver");
setTimeout(function() {
location.reload();
}, 5000);
}
<!-- Original Question -->
<div id="GamePage_question" style="position:absolute; z-index:99; top:460px; left:160px; margin:auto; color:#FFFFFF; font-size:60px; font-family: Calibrib; width:800px; text-align: center;"></div>
<!-- Answer-Original-Choice List -->
<img id="GamePageAnswer_1" style="position:absolute; z-index:3; top:1100px; left:260px; margin:auto;" />
<img id="GamePageAnswer_2" style="position:absolute; z-index:3; top:1300px; left:260px;" />
<!-- Selection answer -->
<img src="lib/image/transparent.png" class="transparentBg" style="position:absolute; z-index:4; top:1100px; left:0px; margin:auto; width:1080px; height:150px; border:1;" onclick="select_answer(1);" />
<img src="lib/image/transparent.png" class="transparentBg" style="position:absolute; z-index:4; top:1300px; left:0px; margin:auto; border:1; width:1080px; height:150px;" onclick="select_answer(2);" />
最佳答案
我基本上猜测这里的 else 子句> if (exist == false)
导致对 showQuestion
的相同无限调用(如@JonasGrumann 所评论)而 exist
是除 false
之外的值(正如@Reddy 评论的那样,调用循环导致此 RangeError
)。 GamePage_question_list
永远不会达到@FK82 评论的第六个长度,因此 if (GamePage_question_list.length > 5)
的 if
子句永远不会执行,但是else 子句,其中 showQuestion
在 if (exist == false)
的 else 子句中永远被调用(我认为 5
长度应该在此处更具编程性:4
)。
基本解决方案是更新此 GamePage_question_list.length > 5
条件,其中 bigger than 运算符可以是 >=
或 5
可以是 4
,检查长度 getter 是否返回大于/等于/等于 5 的值。
关于javascript - 经历 "Uncaught RangeError: Maximum call stack size exceeded",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40717921/
我有一个 Node.JS 自动化,它使用 Puppeteer 并在过程中加载一些 URL。我的代码非常基本,仅使用包文档中记录的非常基本的函数。 自动化计划每 15 分钟使用 crontab 运行一次
我尝试阅读 stackoveflow 上回答的一些问题并根据此更改 eclipse.ini: 现在,除了一个应用程序之外,每个应用程序都可以正常运行。它显示此消息: 无法执行 dex:超出 GC 开销
问题描述: Task A. Amount of subtractions You have an array a length n. There are m queries (li,ri), for
编辑:看起来问题是过度使用#includes 创建圈子。我确保只包括那些需要的,它解决了前两个错误。 但是,我仍然为 BUtton 和 Elevator 得到“指定的多个默认构造函数” 每个错误都有两
在CloudKit中,我尝试通过批处理来保存大量的记录。但是,我的应用程序因以下错误而崩溃: Error pushing local data: 这是我的代码: CKModifyRecordsOpe
我正在尝试使用以下代码将 BigQuery 数据集从 Google Cloud Platform 下载到 R 工作区以对其进行分析: library(bigrquery) library(DBI) l
在 Kubernetes 中 Kubernetes Health Check Probes ,如果 timeoutSeconds 超过 periodSeconds 会怎样?例如: initialDel
我们正在使用 youtube 数据 api v3,并且已经有一段时间没有任何问题了。最近,我们收到了这个 403 异常: The request cannot be completed because
我正在将一个项目从gradle版本3.3转换为4.10.1。该项目主要是使用自定义构建步骤构建的C++代码,而不是CMake(externalNativeBuild)或Android.mk(ndkBu
这是我为查找小于或等于给定编号的跳跃数而编写的代码。它显示错误“超出输出限制” int main() { int t; cin>>t; while(t--) { long long int n
我正在尝试使用 Google Translate REST API 并同时请求以下网址: http://ajax.googleapis.com/ajax/services/language/trans
大多数时候,作为 .Net 开发人员,我们可以自由地在高级抽象世界中玩耍,但有时现实会踢你的私密部分,并告诉你要找到一个真的理解。 我刚刚经历过其中一次。我认为将角落数据列为项目列表就足够了,以便您了
我编写了一个更新函数,但是多次执行将产生错误context deadline exceeded。 我的功能: func Update(link string, m bson.M) { conf
我在我的网络服务器上同时使用 mysql 和 asp.net。我还使用 sqlite 数据库以便能够在另一台设备上使用该数据库。我需要在两个数据库之间发送数据。这是一天需要做很多次的事情。这是我如何做
我在我的应用程序中使用 Google TextToSpeech 已经很长时间了,我的许多用户都在使用离线语音,所以我对使用的资源数量没有任何问题。但是在收到 GoogleTTS 的最新更新后,我所有的
我正在尝试从 MySQL 5.0.45 数据库中删除几行: delete from bundle_inclusions; 客户端工作了一段时间,然后返回错误: Lock wait timeout ex
我试图将一个 ~200G 的文件加载到具有 4 个数据节点的 MySQL 集群中,我的目标表的 DDL 是这样的: CREATE TABLE XXXXXX ( ID BIGINT AUTO
我有这个脚本: def number_of_occurences(c, message): position = message.find(c) if position == -1:
我正在尝试对我的应用程序进行单元测试,但大部分测试都失败了,原因是异步等待失败:超过 30 秒的超时时间,未满足预期:“Home Code”。 我不知道为什么会这样失败,但这是我下面的代码 class
我的 HTML 表单是这样的 但是,当我上传一个 3mb 的文件时,它给出错误: Problem: File exceeded max_file_size" 最佳答案 我最后检查过,MAX_FIL
我是一名优秀的程序员,十分优秀!