TAOTAO

2010年10月28日 #

a标签的一个问题,当时没转过弯来···

今天工作的时候,写了这样一段代码·(这是简化版)

 

<a href="javascript:aa(1111,this)"></a>
<script type="text/javascript">
function aa(id,obj){
alert(obj);
}
</script>

 

弹出神马呢? 应该是dom吧,结果是window对象。

 

当然还以为是BUG,后来去群里问了下好多人都不知道,突然被人提醒了一下恍然大悟。

href="javascript:aa(1111,this)"的意义其实就是在浏览器地址栏输入javascript:aa(1111,this),这样自然this是指向window的。

这种情况应该是用事件才能指向触发事件的对象

 

<a href="#" onclick="aa(1111,this)"></a>
<script type="text/javascript">
function aa(id,obj){
alert(obj);
}
</script>

 

就是这样,当时没想到会有这种情况,被折磨了半小时,真是粗心啊!!

 



posted @ 2010-10-28 23:32 TAOTAO. 阅读(17) 评论(1) 编辑

2010年10月21日 #

html5时钟

先贴代码,有空详细下

<!DOCTYPE HTML>
<html>
<head>
	<meta charset="UTF-8">
	<style type="text/css">
	canvas{position:absolute;top:0px;left:0px;}
	</style>
	<title>时钟</title>
</head>
<body>
	<canvas id="canvas" width="200" height="200"></canvas>
	<canvas id="p_canvas" width="200" height="200"></canvas>
	<script type="text/javascript">
	//获取绘图对象
	var canvas = document.getElementById('canvas');
	var context = canvas.getContext('2d');	
	
	var p_canvas = document.getElementById('p_canvas');
	var p_context = p_canvas.getContext('2d');
	
	var height=200,width=200;
	//画大圆	
	context.beginPath();
	context.strokeStyle="#009999";
	context.arc(width/2,height/2,width/2-1,0,Math.PI*2,true);
	context.stroke();
	context.closePath();
	//画中间点
	context.beginPath();
	context.fillStyle="#000";
	context.arc(width/2,height/2,3,0,Math.PI*2,true);
	context.fill();
	context.closePath();
	
	//画小刻度
	var angle = 0,radius = width/2 - 4;	
	for(var i=0;i<60;i++){
		context.beginPath();
		context.strokeStyle="#000";
		//确认刻度的起始点
		var x = width/2 + radius*Math.cos(angle),y = height/2 + radius*Math.sin(angle);		
		context.moveTo(x,y);
		//这里是用来将刻度的另一点指向中心点,并给予正确的角度
		//PI是180度,正确的角度就是 angle+180度,正好相反方向
		var temp_angle = Math.PI +angle;		
        context.lineTo(x +3*Math.cos(temp_angle),y+3*Math.sin(temp_angle));
		context.stroke();
		context.closePath();
		angle+=6/180*Math.PI;
	}
	//大刻度
	angle = 0,radius = width/2 - 4;	
	context.textBaseline = 'middle';
	context.textAlign = 'center';
	context.lineWidth = 2;
	for(var i=0;i<12;i++){
		var num = i+3>12? i+3-12:i+3 ;	
		context.beginPath();
		context.strokeStyle="#FFD700";
		var x = width/2 + radius*Math.cos(angle),y = height/2 + radius*Math.sin(angle);	
		context.moveTo(x,y);
		var temp_angle = Math.PI +angle;		
        context.lineTo(x +8*Math.cos(temp_angle),y+8*Math.sin(temp_angle));
		context.stroke();
		context.closePath();
		//大刻度 文字
		context.fillText(num,x+16*Math.cos(temp_angle),y+16*Math.sin(temp_angle));
		angle+=30/180*Math.PI;
	}
	
	function Pointer(){
		var p_type	= [['#000',70,1],['#ccc',60,2],['red',50,3]];
		function drwePointer(type,angle){
			type = p_type[type];
			angle = angle*Math.PI*2 - 90/180*Math.PI;	
			var length= type[1];
			p_context.beginPath();
			p_context.lineWidth = type[2];
			p_context.strokeStyle = type[0];
			p_context.moveTo(width/2,height/2);		
			p_context.lineTo(width/2 + length*Math.cos(angle),height/2 + length*Math.sin(angle));		
			p_context.stroke();
			p_context.closePath();
			
		}
		setInterval(function (){
			p_context.clearRect(0,0,height,width);
			var time = new Date();
			var h = time.getHours();
			var m =	time.getMinutes();
			var s = time.getSeconds();			
			h = h>12?h-12:h;
			h = h+m/60; 
			h=h/12;
			m=m/60;
			s=s/60;
			drwePointer(0,s);
			drwePointer(1,m);
			drwePointer(2,h);		
		},500);
	}
	var p = new Pointer();
	</script>
</body>
</html>

posted @ 2010-10-21 17:59 TAOTAO. 阅读(187) 评论(0) 编辑

2010年10月20日 #

canvas 使用示例

终于下决心开始写博客了,发现还不会用博客,有时候自己捣鼓下。

这是第一篇,没啥技术含量,所以也不写啥说明了..

 

<!DOCTYPE HTML>
<html>
<head>
	<meta charset="UTF-8">
	<title>HTML5示例</title>
	<style type="text/css">
		#container{border:1px solid #ccc;width:800px;height:600px;position:relative;}
		canvas{position:absolute;top:0px;left:0px;z-index:1;}
	</style>
</head>
<body>
	<select id="tools">
		<option value="pen">铅笔</option>
		<option value="line">直线</option>
		<option value="rect">矩形</option>
		<option value="circle">圆形</option>
		<option value="ellipse">椭圆</option>
	</select><br />
	<div id="container">
	<canvas id="canvas" width="800" height="600"></canvas>
	<canvas id="canvas_temp" style="z-index:2;" width="800" height="600"></canvas>
	</div>
	<script type="text/javascript">	
	var canvas = document.getElementById('canvas');
	var context  = canvas.getContext('2d');
	
	var _canvas = document.getElementById('canvas_temp');
	var _context  = _canvas.getContext('2d');
	var tools= document.getElementById('tools');
	
	tools.onchange = function (e){		
		tool[this.value]();
	};
	var tool = {
		pen:function (){
			this.reset();
			_canvas.onmousedown=function (e){
				_context.moveTo(e.layerX,e.layerY);
				_canvas.onmousemove=function (e){
					_context.lineTo(e.layerX,e.layerY);
					_context.stroke();
				};
				_canvas.onmouseup=function (e){
					_canvas.onmousemove=null;
					_canvas.onmouseup=null;
					tool.updata();
				};
			};
		},
		line:function (){
			this.reset();
			_canvas.onmousedown=function (e){
				var _e = e;				
				_canvas.onmousemove=function (e){	
					_context.clearRect(0,0,canvas.width,canvas.height);
					_context.beginPath();
					_context.moveTo(_e.layerX,_e.layerY);
					_context.lineTo(e.layerX,e.layerY);
					_context.stroke();
					_context.closePath();
				};	
				_canvas.onmouseup=function (e){
					_canvas.onmousemove=null;
					_canvas.onmouseup=null;
					tool.updata();
				};				
			}		
		},
		rect:function (){
			this.reset();
			_canvas.onmousedown=function (e){
				var _e = e;
				_context.strokeStyle="#000";
				_canvas.onmousemove=function (e){	
					_context.clearRect(0,0,canvas.width,canvas.height);
					_context.strokeRect(_e.layerX,_e.layerY,e.layerX-_e.layerX,e.layerY-_e.layerY);
				};
				_canvas.onmouseup=function (e){
					_canvas.onmousemove=null;
					_canvas.onmouseup=null;
					tool.updata();
				};				
			}	
		},
		circle:function (){
			this.reset();
			_canvas.onmousedown=function (e){
				var _e = e;
				_canvas.onmousemove=function (e){	
					_context.clearRect(0,0,canvas.width,canvas.height);
					_context.beginPath();
					_context.arc(_e.layerX,_e.layerY,e.layerX-_e.layerX,0,Math.PI*2,true);
					_context.stroke();
					_context.closePath();
				};
				_canvas.onmouseup=function (e){
					_canvas.onmousemove=null;
					_canvas.onmouseup=null;
					tool.updata();
				};				
			}	
		},
		ellipse:function (){
			this.reset();
			_canvas.onmousedown=function (e){
				var _e = e;				
				_canvas.onmousemove=function (e){
					var st=0;
					_context.clearRect(0,0,canvas.width,canvas.height);
					_context.beginPath();
					_context.moveTo(_e.layerX+(e.layerX-_e.layerX)*Math.cos(st), _e.layerY+(e.layerX-_e.layerX)*Math.sin(st));
					st+=1/180*Math.PI;					
					for(var i=0;i<360;i++){
						_context.lineTo(_e.layerX+(e.layerX-_e.layerX)*Math.cos(st),_e.layerY+(e.layerY-_e.layerY)*Math.sin(st));
						st+=1/180*Math.PI;
					}
					_context.stroke();
					_context.closePath();
				};
				_canvas.onmouseup=function (e){
					_canvas.onmousemove=null;
					_canvas.onmouseup=null;
					tool.updata();
				};				
			}			
		},
		reset:function (){
			_canvas.onmousedown=null;
			_canvas.onmouseup=null;
			_canvas.onmousemove=null;
		},
		updata:function (){	
			context.drawImage(_canvas, 0, 0);
			_context.clearRect(0, 0, canvas.width, canvas.height);
		}
	};
	tool['pen']();	
	</script>
</body>
</html>

posted @ 2010-10-20 17:06 TAOTAO. 阅读(135) 评论(0) 编辑