我有段javascript代码运行不了。是关于两次调用setInterval的。请各位帮帮我解释解释其中原因。

我写了一段代码:每隔五十毫秒输出并更新时间,按一个按钮停止,按另一个按钮则继续。可是当我按另一个按钮却无法继续输出更新时间。代码如下:<html><body><input... 我写了一段代码:每隔五十毫秒输出并更新时间,按一个按钮停止,按另一个按钮则继续。可是当我按另一个按钮却无法继续输出更新时间。
代码如下:
<html>
<body>
<input type="text" id="clock" size="35" />
<script language=javascript>
var int=self.setInterval("clock()",50)
function clock()
{
var t=new Date()
document.getElementById("clock").value=t
}
</script>
<button onclick="int=window.clearInterval(int)">停止</button>
<button onclick="int=window.setInterval("clock()",50)">开始</button>
</body>
</html>
拜托各位了。
展开
 我来答
chao919305
2012-08-29 · TA获得超过583个赞
知道小有建树答主
回答量:868
采纳率:0%
帮助的人:602万
展开全部
<html>
<body>
<input type="text" id="clock" size="35" />
<script language=javascript>
var int = [];
int.push(setInterval("clock()",50));
function clock(){
var t = new Date();
document.getElementById("clock").value = t;
}
function stopTime(){
for(var i=0;i<int.length;i++){
window.clearInterval(int[i]);
}
int.length = 0;
}
</script>
<button onclick="stopTime()">停止</button>
<button onclick="int.push(window.setInterval(clock,50))">开始</button>
</body>
</html>
---------------分割线---------------
在你代码基础上修改的,
首先将int变量改为数组,不然setInterval句柄无法全部接收。例如:如果连这点击2下开始按钮,就产生了一个无法取消的 setInterval。
将所有产生的 setInterval句柄都压进变量名为int的数组,然后每次点击停止按钮时,将所有的setInterval都停止,然后将int变量的长度设置为0(既:清空int变量代表的数组)

然后:开始按钮的onclick中的代码 不应该再出现双引号,而且,setInterval的第一个参数如果是字符串格式的话,会带来性能问题,参考<高性能javascript>一书。直接参数改为要调用的函数的函数名即可。

就这些。
代码已测试,可运行。
追问
其实我的代码只是双引号里还用了双引号引发了错误。
追答
那你连续点两次 “开始”按钮,然后再点 1万次停止,看看会不会停止。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式