开发HTML+JS点击自增功能时Chrome返回错误码5,附完整问题代码求助
触发Chrome错误码5的核心原因
这个报错本质是你写的代码存在无限死循环,直接占满JS主线程,导致Chrome标签页的渲染进程被强制终止,和浏览器本身的设置、网络配置没有任何关系,这也是你试完Chrome官方所有排查方法都没解决的根本原因——问题出在代码逻辑上,不是浏览器环境的问题。
具体的代码问题逐一拆解
- 最致命的bug来自
while (x = 1)行:这里写的是赋值操作不是相等判断,会把变量x永久设置为1,而且整个循环体没有任何修改x值的逻辑,会形成永不停歇的死循环,彻底占住JS的主线程,后续的DOM就绪事件、按钮点击事件、计时器回调全部没有机会执行,最终直接把标签页进程拖崩 - 计时器逻辑完全失效:原来写的
setInterval回调里的total + increment只是临时计算了一次表达式的结果,没有把值赋值回total变量,total永远停留在初始的0值,完全起不到累计计数的作用 - 事件绑定逻辑错位:把jQuery的
$(document).ready写在死循环内部完全没有意义。这个事件本身只会在页面加载完成时触发一次,反复在循环里注册不仅不会触发更多回调,还会造成重复绑定点击事件的内存泄漏问题 - 点击计数逻辑失效:原来的点击回调里写
$("h1").text(total + 1),只是临时把h1标签的文本设为total加1的结果,没有把最新的计数值存回total变量,不管点击多少次,页面永远只会显示固定值,不会累计 - 按钮上的连续问号是本地文件编码不匹配导致的文案乱码,不影响核心逻辑,但建议修正为正常的功能提示文案
修正后可正常运行的参考代码
下面的代码保留了你原本想实现的“点击计数、每秒自动累加”的逻辑,去掉了所有会导致崩溃的问题:
<!DOCTYPE html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> // 初始化计数基础变量 let total = 0 let increment = 1 // 修正后的计时器逻辑:把累加结果赋值回total setInterval(function(){ total += increment; // 可选:如果需要让数字实时跳动显示,可在这里更新h1的文本内容 }, 1000); // 页面加载完成后再绑定事件,不要把事件绑定塞在循环里 $(document).ready(function(){ $("#id").click(function(){ // 每次点击更新计数,并把最新值渲染到页面 total += 1 $("h1").text(total); }); }); </script> </head> <body> <h1>0</h1> <button id="id">点击累加计数</button> </body>
内容的提问来源于stack exchange,提问作者pettytheft
相关产品推荐
相关产品推荐

