如何通过Chrome控制台修改count函数中的timeleft变量
问题描述
我的网站上有一个如下样式的按钮:
点击该按钮会调用如下脚本:
function count(){ let downloadTimer; var timeleft = 30; downloadTimer = setInterval(countDown,1000) function countDown(){ document.getElementById("aaa").innerHTML = "Wait " ; document.getElementById("hid").style.display = "none"; document.getElementById("timer").innerHTML = timeleft ; timeleft -= 1; if(timeleft < 0){ clearInterval(downloadTimer); document.getElementById("timer").innerHTML = "1414-YYYI" } } $(window).blur(function(){ console.log("blurred") clearInterval(downloadTimer); }) $(window).focus(function(){ console.log("focuesed") downloadTimer = setInterval(countDown,1000); }) }
我可以运行count函数,但无法通过Google Chrome控制台修改timeleft变量,请问该如何操作?
解决方法
通过断点直接修改
- 打开Chrome开发者工具(快捷键F12),切换到「Sources」标签页
- 在左侧文件列表中找到包含这段脚本的文件,定位到
countDown函数里的timeleft -= 1;代码行 - 点击行号设置断点,然后点击页面上的按钮触发
count函数 - 代码执行到断点时会自动暂停,此时在调试器右侧的「Scope」面板中,找到「Local」或「Closure」区域下的
timeleft变量,双击即可修改它的值
将变量暴露到全局作用域
如果可以修改页面的源代码,把timeleft的定义移到count函数外部,变成全局变量:var timeleft; // 全局声明 function count(){ let downloadTimer; timeleft = 30; // 赋值给全局变量 downloadTimer = setInterval(countDown,1000) // 后续代码保持不变 }修改后,直接在控制台输入
timeleft = 目标数值就能实时修改倒计时数值利用控制台的闭包访问能力
无需修改原代码,当代码因断点暂停在countDown函数内部时,调试器的「Scope」面板里的「Closure」区块会包含timeleft变量,直接修改即可生效
内容的提问来源于stack exchange,提问作者Quốc Thiệu
相关产品推荐
相关产品推荐

