js_day19--js事件驱动机制



Day19




js事件驱动机制


       Js是采用事件驱动响应用户操作的,比如通过鼠标或者按键在浏览器窗口或者网页元素(按钮,文本框)上执行的操作,我们称之为事件(Event


       由鼠标或热键引发的一连串程序的动作,称之为事件驱动Event-Driver)。


       对事件进行处理程序或函数,我们称之为事件处理程序(Event Handler)


       ★原理图:



★事件分类:


鼠标事件:当用户在页面上用鼠标点击页面元素的时候,对应的dom节点会触发鼠标事件,主要要有:click,dblclick,mousedown,mouseout,mouseover,


mouseup,mousemove等。


键盘事件:当用户用键盘输入信息时,会触发键盘操作事件,主要包括:


Keydown,keypress,keyup等。


HTML事件:在html节点加载变更等相关的事件,比如windowonload,unload,abort,error,文本框的select,change等等。


其他事件:页面中一些特殊对象运行过程中产生的事件,比如,xml,http,


Request对象的相关事件。


              ★入门案例:


<html>
<head>
	<script language = "javascript">
		function test1(e){
			window.alert("x="+e.clientX+",y="+e.clientY);	
		}
		function test2(e){
			//document.writeln("x="+e.clientX+",y="+e.clientY+"<br/>");	
			window.alert("Ok");
		}
		
		function test3(e){
			window.alert(new Date());
		}
		
		//js如何访问元素的style属性,进行样式修改
		function test4(obj){
			//怎么知道是button1被按下,还是button2被按下
			var div1 = document.getElementById("div1");
			//window.alert(obj.value);
			if(obj.value=="黑色"){	
				div1.style.backgroundColor="black";
				//	div1.style.width="800px";
				//	window.alert(div1.style.width);
			}else if(obj.value=="红色"){
					div1.style.backgroundColor="red";
			}
		}
	</script>	
</head>	
<body ">
	<input type=" button" οnclick="test3()" value="显示当前时间"/>
	<!--如何通过修改style来改变style-->
	<div id="div1" style="width:400px;height:200px;background-color:red">
		div1
	</div>
	<input type="button" value="黑色" οnclick="test4(this)"/>
	<input type="button" value="红色" οnclick="test4(this)"/>
	
</body>	
</html>	

怎样通过javascript修改外部的css文件呢?

案例:

<html>
<head>
	<link href="day19_2.css" rel="stylesheet" type="text/css"/>
	<script language = "javascript" type="text/javascript">
		function test5(eventobj){
		
			//获取day19_2.css中的所有class选择器	
			var ocssRules = document.styleSheets[0].rules||
 document.styleSheets[0].cssRules;//包含day19_2.css总所有的类选择器
			//从ocssRules中取出你希望的样式class
			var style1 = ocssRules [0];//这里的0表示文件中的第一个选择器
			if(eventobj.value=="黑色"){
				window.alert("点击了黑色");
				style1.style.backgroundColor="black";	
			}else if (eventobj.value=="红色"){
				window.alert("点击了红色");
				style1.style.backgroundColor="red";	
			}
		}
	</script>	
</head>	
<body ">

	<!--如何通过修改style来改变style-->
	<div id="div1" class="style1">
		div1
	</div>
	<input type="button" value="黑色" οnclick="test5(this)"/>
	<input type="button" value="红色" οnclick="test5(this)"/>
	
</body>	
</html>

★一个事件可以被多个函数监听


              ★强调:并不是所有的html元素都有相同的event事件(对象),比如提交按钮有onsubmit事件,但是输入框就没有。


              输入框有获取焦点、失去焦点等事件。


              window3个事件


onload页面打开


onunload关闭页面后


onbeforeunload关闭页面前


              ⊙完成下面任务:


  1. 防止用户通过点击鼠标右键菜单拷贝网页内容

    οncοntextmenu="return false"

  2. 当用户试图选中网页文字拷贝时,给出提示:版权所有,禁止拷贝

    onselectstart="return false"

     


js驱动编程,js版计算器


       源码如下:

js_calc.html:

<html>
	<head>
		<script language="javascript" src="js_calc.js">
			
	
		</script>	
	</head>
	<body>
		<table width=420px height=220px border=1>
			<tr bgColor="blue"><td colspan=4 align="center"><input id="text1" type="text" width=400px/></td></tr>
			<tr><td width=105px align="center"><input type="button" value="POWER" οnclick="calc(this)"/></td><td width=105px align="center"><input type="button" value=" CLEAR " οnclick="calc(this)"/></td><td width=105px align="center" colspan=2><input type="button" value=" BACK " οnclick="calc(this)"/></td></tr>
			<tr align="center"><td><input type="button" value="      1      " οnclick="calc(this)"/></td><td><input type="button" value="      2      " οnclick="calc(this)"/></td><td><input type="button" value="      3      " οnclick="calc(this)"/></td><td><input type="button" value="      4      " οnclick="calc(this)"/></td></tr>
			<tr align="center"><td><input type="button" value="      5      " οnclick="calc(this)"/></td><td><input type="button" value="      6      " οnclick="calc(this)"/></td><td><input type="button" value="      7      " οnclick="calc(this)"/></td><td><input type="button" value="      8      " οnclick="calc(this)"/></td></tr>
			<tr align="center"><td><input type="button" value="      9      " οnclick="calc(this)"/></td><td><input type="button" value="      0      " οnclick="calc(this)"/></td><td><input type="button" value="      .      " οnclick="calc(this)"/></td><td><input type="button" value="      =      " οnclick="calc(this)"/></td></tr>
			<tr align="center"><td><input type="button" value="      +      " οnclick="calc(this)"/></td><td><input type="button" value="      -      " οnclick="calc(this)"/></td><td><input type="button" value="      *      " οnclick="calc(this)"/></td><td><input type="button" value="      /      " οnclick="calc(this)"/></td></tr>
		</table>
	</body>	
</html>

js_calc.js:


 

//定义去掉字符串两边空格的方法
String.prototype.trim = function(){
				return this.replace(/(^\s*)|(\s*$)/g, "");
};

//平方运算
function power(a){
	return Math.pow(a,2);	
}
//一般运算
function normal_calc(num1,num2,opr){
	if(opr=="+"){
		return (num1+num2);	
	}	else if(opr=="+"){
		return (num1-num2);
	}else if(opr=="*"){
		return (num1*num2);
	}else if(opr=="/"){
		return (num1/num2);
	}
}

//根据字符串计算
function normal(string){
	if(string.indexOf("+") != -1){
		var nums = string.split("+");
		var num1 = parseFloat(nums[0].trim());
		var num2 = parseFloat(nums[1].trim());
		return normal_calc(num1,num2,"+");
	}	else if(string.indexOf("-") != -1){
		var nums = string.split("-");
		var num1 = parseFloat(nums[0].trim());
		var num2 = parseFloat(nums[1].trim());
		return normal_calc(num1,num2,"-");
	}else if(string.indexOf("*") != -1){
		var nums = string.split("*");
		var num1 = parseFloat(nums[0].trim());
		var num2 = parseFloat(nums[1].trim());
		return normal_calc(num1,num2,"*");
	}else if(string.indexOf("+") != -1){
		var nums = string.split("/");
		var num1 = parseFloat(nums[0].trim());
		var num2 = parseFloat(nums[1].trim());
		return normal_calc(num1,num2,"/");
	}
}

//计算方法
function calc(e){
	var text1 = document.getElementById("text1");
	//window.alert(text1);
	var txt = e.value.trim();
	switch(txt){
		case "1":text1.value=text1.value+txt;break;
		case "2":text1.value=text1.value+txt;break;
		case "3":text1.value=text1.value+txt;break;
		case "4":text1.value=text1.value+txt;break;
		case "5":text1.value=text1.value+txt;break;
		case "6":text1.value=text1.value+txt;break;
		case "7":text1.value=text1.value+txt;break;
		case "8":text1.value=text1.value+txt;break;
		case "9":text1.value=text1.value+txt;break;
		case "0":text1.value=text1.value+txt;break;
		case ".":
			if(text1.value.charAt(text1.value.length-1)=="+"
				||text1.value.charAt(text1.value.length-1)=="-"
				||text1.value.charAt(text1.value.length-1)=="*"
			||text1.value.charAt(text1.value.length-1)=="/"
			||text1.value.indexOf(".") != -1){
					window.alert("输入错误,请检查!");
			}else{
				text1.value=text1.value+txt;
			}
			break;
		case "+":text1.value=text1.value+txt;break;
		case "-":text1.value=text1.value+txt;break;
		case "*":text1.value=text1.value+txt;break;
		case "/":text1.value=text1.value+txt;break;
		case "=":text1.value=normal(text1.value);break;
		case "CLEAR":text1.value="";break;
		case "BACK" :
				text1.value=text1.value.substring(0,text1.value.length-1);break;
		case "POWER":
				var num = text1.value;
				var result = power(parseFloat(num));
				text1.value=result;
				break;
	}
}


运行结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: surf_cli_chn_mul_day-tem-12001-201501.txt是一个文件名,这个文件可能是一个文本文件。根据文件名的后缀“txt”可以判断出这是一个文本文件。根据文件名中的其他信息,可以猜测这个文件记录了2015年1月份中国地区某个地点的多天的海浪信息和气温信息。 文件名中的“surf_cli_chn_mul_day”可能表示这是一个关于冲浪、气象和中国的多天数据文件。其中“surf”可能指的是冲浪,意味着这个文件中包含有关冲浪条件和海浪高度的数据。而“cli”可能表示气候或气象,意味着这个文件中可能还包含了一些与气温或其他气象要素相关的数据。最后,“chn_mul_day”可能表示这是中国地区多天的数据,指的是这个文件中包含了多天的数据,可能是按日期顺序排列。 根据文件名中的“tem-12001-201501”部分,可以猜测这个文件可能是关于2015年1月份某个地点的气温数据。其中“tem”可能表示气温,而“12001”可能是指某个具体地点的编号或代号。而“201501”则代表了这个文件中记录的是2015年1月份的数据。 总结而言,surf_cli_chn_mul_day-tem-12001-201501.txt这个文件名暗示了这是一个包含了中国某地2015年1月份多天的冲浪和气温数据的文本文件。 ### 回答2: surf_cli_chn_mul_day-tem-12001-201501.txt是一个文件名,它可能表示一个气象数据文件。根据文件名的命名规则,该文件可能包含2015年1月份中国某个城市或地区的多日气温数据。 在该文件中,"surf_cli_chn_mul_day"可能代表"surface climate China multiple day"(中国地面气候多日)的缩写,意味着这是一个包含中国地面气候数据的文件。"tem"可能代表"temperature"(温度),表示该文件中包含的是温度数据。"12001"可能是文件的编号,用于标识该文件属于某个特定的数据集或项目。"201501"代表文件所涵盖的日期范围,可能是2015年1月。 由于题目只提供了文件名,并未提供具体的内容或其他背景信息,因此对于该文件的具体内容和用途,我无法做更详细的解读。要了解更多关于该文件的信息,需要查阅实际的文件内容或者咨询相关的数据提供机构或个人。 ### 回答3: surf_cli_chn_mul_day-tem-12001-201501.txt 是一个文件名,文件中可能包含有关2015年1月份中国多地的冷暖气温数据。 根据文件名可以分析出以下信息: 首先,文件是以“surf_cli_chn_mul_day-tem-12001-”开头的,这可能表示了该文件是多个城市的气温数据。 然后,文件名中的“201501”表示了该文件记录的是2015年1月份的数据。 如果我们打开这个文件,可能会看到以下内容: 该文件可能包含有关中国多个城市在2015年1月份每天的气温数据。这些数据可能以一定的格式来展示,可能按照城市和日期进行分组,并且可能有时间间隔。 该文件可能是一个纯文本文件,我们可以使用文本编辑器来打开它,并查看其中的内容。在文件中,每个城市的气温数据可能以一定的形式被记录,常见的格式可能是每行记录一个数据点,包括城市、日期和相应的气温值。 通过分析该文件,我们可以获得2015年1月份中国多地的气温趋势,可以观察各个城市在这个月份内的气温变化情况,从而对该时期的气候有更多的了解。这些数据对于气象研究、城市规划以及农业生产等领域可能具有重要的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值