【发布时间】:2019-04-01 18:57:25
【问题描述】:
我制作了一个自定义函数来复制 setInterval 函数。 这是我想要做的:
<html>
<head>
<script id='scpt_a'>
//custom setInterval function
function interval(func,ti){
try{
func.call(null);
}
catch(err){
throw new Error(err.toString());
}
setTimeout(()=>{interval(func,ti); },ti);
}
//custom setinterval function end
$('#start).click(()=>{
$('body').append("<script id='scpt_b'>interval(()=>
{console.log('hello');},10000);</script>");
});
$('#stop).click(()=>{
$('#scpt_a').remove();
$('#scpt_b').remove();
});
</script>
</head>
<body>
<button id='start'>start</button>
<button id='stop'>stop</button>
</body>
</html>
每当我运行此代码时,它都可以正常工作,即当我单击 开始按钮 时,它会附加代码,以便代码执行它并继续打印 hello 。现在,当我按下 停止按钮 时,它会 删除 附加脚本 以及 初始(非附加)脚本 .所以由于脚本不存在所以它应该停止执行但它没有发生。
我使用 chrome 开发工具,我看到点击 停止按钮 没有脚本(添加后有)在 HTML 文档中,但仍然 hello 正在控制台上打印。
请帮我弄清楚为什么会发生这种情况以及如何解决这个问题。
【问题讨论】:
标签: javascript jquery append google-chrome-devtools setinterval