var c=0
var t
function timedCount()
{
document.getElementById('txt').value=c
c=c+1
t=setTimeout("timedCount()",1000)
}
<input type="button" value="开始计时!" onClick="timedCount()">如上的代码,如果你点了两次计时按钮的话,就变成,相当于两个计时器了,c增大的速度就变快了。但是,不是操作的同一个变量么?
为什么计时器会是这样???
var t
function timedCount()
{
document.getElementById('txt').value=c
c=c+1
t=setTimeout("timedCount()",1000)
}
<input type="button" value="开始计时!" onClick="timedCount()">如上的代码,如果你点了两次计时按钮的话,就变成,相当于两个计时器了,c增大的速度就变快了。但是,不是操作的同一个变量么?
为什么计时器会是这样???
解决方案 »
- JS控制网站首页背景图片
- js 正则判断固定格式url--在线等~,解决结贴
- 以行为单位打乱排序?在线等~ 谢谢~~
- 获得表格单元问题
- 我想实现图片转换滤镜功能~~求教各位朋友
- ActiveX,Com 方面的问题,WEB与客户端应用程序结合
- 求一个判断字符是否是:非字母、非数字、非空格、非换行符的正则。
- 请问只留下英文,标点符号和回车的正则表达式怎样写?
- 当将复制的文本粘贴到textarea中后原来的tab键的4个空格变成了8个,怎样保持tab键为4个空格?
- 谁能给我Javascript的帮助文档。能够查询函数的用法。谢谢!
- 求助!!!嵌套frameset的问题
- JS如何获取页面中cherkbox选中后的lable和b标签的内容
function clear(){
cleatTimeout(t);
}
这样你点击两次“开始计时”,在点击一次“clear”,页面上的计数器仍在运行,试试吧
{
clearInterval(timer);//终止上一个计时器
timer=setInterval("timedCount1()",1000)
};function timedCount1(){
document.getElementById('txt').value=c;
c=c+1;
}
上面添加的js代码写错了,应该是function clear111(){
clearTimeout(t);
}还有添加清除按钮的那行,改成<input id="txt" type="button" value="clear" onClick="clear111()"></body>,这样是js中应该注意的,value和onclick里面的值别写成一样的,要不有的浏览器不能正确解析
var t
function timedCount(clicked)
{
document.getElementById('txt').value=c
c=c+1
if(!clicked){
return;/*你clear也行,看你自己的需要*/
}
t=setTimeout("timedCount()",1000)
}
<input type="button" value="开始计时!" onClick="timedCount(1)">click的时候多传个参数过去
var c=0
var t
function timedCount(clicked)
{
if(clicked){
return;/*你clear也行,看你自己的需要*/
}
document.getElementById('txt').value=c
c=c+1
t=setTimeout("timedCount()",1000)
}
<input type="button" value="开始计时!" onClick="timedCount(1)">写错个地方,放错位置了。
唔。。比方说像carlisliu说的那样:js中,除了基本数据类型的赋值,其它类型赋值都是地址传递
很好,是赋值传递。按这个逻辑:
1.第一次点击计时器按钮。t是第一个计时器的地址。
2.第二次点击计时器按钮。t已经是第二个计时器的地址了。
3.第一次点击清除按钮。清除了第二个计时器。
4.第二次点击清除按钮。为什么,为什么还能清除掉第一个计时器??调试器里面查看,这个t的值是两个计时器执行的次数的总和。所以,个人感觉哈,计时器,不像是简单的一个地址,更像是一个队列,里面可以有多个做不同事情的计时,先进后出,清除的时候是后加进去的计时。不过无奈,调试也只能看到一个数值,执行次数总和的数值。其实,我是想问这个。。
var c=0//全局变量
var t
function timedCount()
{
document.getElementById('txt').value=c
c=c+1
t=setTimeout("timedCount()",1000)
}1.你的c是全局变量,不管执行多少次timedCount,修改的都是同一个c.
2.你的setTimeout("timedCount()",1000),是一自我直循环调用timedCount,永不停止,每次执行都产生一个新的timedCount事件插入javascript的执行线程的执行队列,此时队列里只有一个setTimeout的事件,只是每次这个执行完都再产生一个新的插入队列.
3.如果你点击n次按钮,那么timedCount()执行n次,也就产生了n个setTimeout事件,也就是javascript的执行队列里面有了n个setTimeout事件
4.同时存在n个执行事件修改c,那么c的增加速度自然是n倍的速度了
这个数值有什么用呢?如果你想要终止 setTimeout() 方法的执行,那就必须使用 clearTimeout() 方法来终止,而使用这个方法的时候,系统必须知道你到底要终止的是哪一个 setTimeout() 方法 (因为你可能同时调用了好几个 setTimeout() 方法),这样 clearTimeout() 方法就需要一个参数,这个参数就是 setTimeout() 方法的返回值 (数值),用这个数值来唯一确定结束哪一个 setTimeout() 方法。
我觉得 你连代码在做什么都不知道
想的太多了
每次timedCount() 后就是一个新的执行
-->废话,白痴都看的出来。
我觉得 你连代码在做什么都不知道
-->我承认,我是没完全理解内部过程,但是谈不上不知道。
想的太多了
-->想不想的多是我的事,不想的多怎么能想得透呢?谁没有逻辑犯转的时候?切!~