http://www.w3school.com.cn/example/jsrf_examples.asp
http://www.w3school.com.cn/tiy/t.asp?f=jsrf_date_timing_clock
<html>
<head>
<script type="text/javascript">
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
// add a zero in front of numbers<10
m=checkTime(m)
s=checkTime(s)
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}
function checkTime(i)
{
if (i<10)
{i="0" + i}
return i
}
</script>
</head>
<body onload="startTime()">
<div id="txt"></div>
</body>
</html>
JS里关于setTimeout函数的中断问题
http://zhidao.baidu.com/question/121288257
setTimeout(function(){location.reload();},1000),可否在执行计时过程中设置个按键让它停止执行下去?
问题补充:
能写出详细的代码吗?我要的是以按键的形式让其结束
满意回答
解决方法捕获按键的事件。
<script language="javascript">
function test(event) {
event = event || window.event;
if(event.keyCode==13) { alert("你按了回车") }
if(event.shiftKey==true) { alert("你按了shift") }
if(event.ctrlKey==true) { alert("你按了ctrl") }
if(event.altKey==true) { alert("你按了alt") }} </script>
每个按键都对应一个ASCII码 比如回车的ASCII码是13 每个按键的ASCII码你可以在百度上查。
setTimeout() 方法的返回值是一个唯一的数值,如果你想要终止 setTimeout() 方法的执行,那就必须使用 clearTimeout() 方法来终止,而使用这个方法的时候,系统必须知道你到底要终止的是哪一个 setTimeout() 方法 (因为你可能同时调用了好几个 setTimeout() 方法),这样 clearTimeout() 方法就需要一个参数,这个参数就是 setTimeout() 方法的返回值 (数值),用这个数值来唯一确定结束哪一个 setTimeout() 方法
你的setTimeout(function(){location.reload();},1000)会返回一个值。
比如你要用回车结束setTimeout js代码如下。
function test(event,id) {
event = event || window.event;
if(event.keyCode==13) {
clearTimeout(id);
}
}
这里的ID 就是你 setTimeout方法的返回值。了解了吗?
JavaScript中声明全局变量三种方式的异同
http://snandy.iteye.com/blog/720816
变量及声明变量是一门语言最基本的概念,入门者都会很快掌握。JavaScript中声明变量也是如此,很简单var(关键字)+变量名(标识符),如下:
- var test;
- //或var test = 5;
需注意的是该句不能包含在function内,否则是局部变量。这是第一种方式声明全局变量。下面是第二种方式:
- test = 5;
没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。
第三种方式如下:
- window.test;
- //或window.test = 5;
这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。
如果只是使用变量test,那么三种方式将没有什么区别。比如:alert(test) 都将显示5。但三种方式在某些情况下还是有区别的,下面分别列出。
分别按以上三种方式声明三个变量a1,a2,a3:
- a1 = 11;
- var a2 = 22;
- window.a3 = 33;
1,for in window对象时
- for(a in window){
- if(a=='a1'||a=='a2'||a=='a3'){
- alert(a)
- }
- }
IE6/7/8/及IE9 pre3 :只弹出了a3,说明通过第一,二种方式声明的全局变量通过for in window对象时将获取不到(原因:http://snandy.iteye.com/blog/723672 )。
Firefox/Chrome/Safari/Opera :a1,a2,a3都弹出了,说明三种方式声明的全局变量,通过for in window对象时都能获取到。
2,delete时
- try {
- alert(delete a1);
- }catch(e){alert('无法delete a1')}
- try{
- alert(delete a2);
- }catch(e){alert('无法delete a2')}
- try{
- alert(delete a3);
- }catch(e){alert('无法delete a3')}
结果如下:
IE6/7/8 | IE9/Firefox/Chrome/Safari/Opera | |
delete a1 | true | true |
delete a2 | false | false |
delete a3 | 无法delete a3 | true |
可以看到,
1,delete a2所有浏览器都是false。即通过var声明的变量无法删除,所有浏览器表现一致。这在犀牛书上也有提到。
2,通过window.a3方式声明的全局变量在IE6/7/8/9中均无法删除,Firefox/Chrome/Safari/Opera中却可以。
3,IE9 pre3很奇怪,delete a1显示false,即不能delete隐式声明的全局变量。
虽然有以上两点不同,但当用in运算时,都返回true。如下
- alert('a1' in window);//true
- alert('a2' in window);//true
- alert('a3' in window);//true
用with打开对象window闭包时,所有浏览器也表现一致,如下
- with(window){
- if(a1){
- alert(a1);//11
- }
- if(a2){
- alert(a2);//22
- }
- if(a3){
- alert(a3);//33
- }
- }