JavaScript 对象 实例

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(关键字)+变量名(标识符),如下:

 

Js代码  收藏代码
  1. var test;  
  2. //或var test = 5;  

 

需注意的是该句不能包含在function内,否则是局部变量。这是第一种方式声明全局变量。下面是第二种方式:

 

Js代码  收藏代码
  1. test = 5;  

 

没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。

第三种方式如下:

 

Js代码  收藏代码
  1. window.test;  
  2. //或window.test = 5;  

 

这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。

 

如果只是使用变量test,那么三种方式将没有什么区别。比如:alert(test) 都将显示5。但三种方式在某些情况下还是有区别的,下面分别列出。

 

分别按以上三种方式声明三个变量a1,a2,a3:

 

Js代码  收藏代码
  1. a1 = 11;  
  2. var a2 = 22;  
  3. window.a3 = 33;  
 

 

1,for in window对象时

 

Js代码  收藏代码
  1. for(a in window){  
  2.     if(a=='a1'||a=='a2'||a=='a3'){  
  3.         alert(a)  
  4.     }  
  5. }  
 

 

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时

 

Js代码  收藏代码
  1. try {  
  2.     alert(delete a1);  
  3. }catch(e){alert('无法delete a1')}  
  4.   
  5. try{  
  6.     alert(delete a2);  
  7. }catch(e){alert('无法delete a2')}  
  8.   
  9. try{  
  10.     alert(delete a3);  
  11. }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。如下

 

Js代码  收藏代码
  1. alert('a1' in window);//true  
  2. alert('a2' in window);//true  
  3. alert('a3' in window);//true  
 

用with打开对象window闭包时,所有浏览器也表现一致,如下

 

Js代码  收藏代码
  1. with(window){  
  2.     if(a1){  
  3.         alert(a1);//11  
  4.     }  
  5.     if(a2){  
  6.         alert(a2);//22  
  7.     }  
  8.     if(a3){  
  9.         alert(a3);//33  
  10.     }     
  11. }  
 

 

 

 

 

 

 


 

 

 

 

 

 

 

posted on 2012-12-28 13:28  chulia  阅读(173)  评论(0)    收藏  举报

导航