script.js:65报RangeError: Maximum call stack size exceeded报错求解决
问题修复方案
栈溢出错误根因
你遇到的Uncaught RangeError: Maximum call stack size exceeded错误是randomUp函数无限递归导致的,触发原因是自定义属性名大小写拼写不一致:
- 在
creationPlateau函数中,你为缓存div设置的自定义属性为div.zombieID = x(ID为全大写) - 在
randomUp函数中,你读取属性时写的是cachettes[idx].zombieId(d为小写)
所有缓存元素的zombieId取值永远为undefined,每次进入索引重复判断逻辑都会触发递归调用,直到浏览器调用栈上限抛出错误。
修复方法
1. 核心错误修复
统一属性名拼写即可,任选一种修改:
- 把
randomUp函数中所有的zombieId替换为zombieID - 或把
creationPlateau函数中的div.zombieID = x替换为div.zombieId = x
2. 其他错误修复
- 按钮显隐逻辑修正
你写的btnStart.getElementsByClassName.display是错误写法,getElementsByClassName是DOM查询方法,不存在display属性,需要改为操作元素样式:
// 原错误写法 btnStart.getElementsByClassName.display = 'none'; // 修正后 btnStart.style.display = 'none'; // scoring函数里的按钮显示逻辑同步修改 btnStart.style.display = 'block';
- 无效代码清理
randomUp函数中的console.log;是无效语句,可直接删除。 - 转义字符还原
你代码里的>、<、"是HTML转义字符,实际运行JS时需要替换为原生符号>、<、"。
内容的提问来源于stack exchange,提问作者R3ckzet
相关产品推荐
相关产品推荐

