一、js的引入

JavaScript修改系统默认输入法_java

js的引入举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>引入javavscript</title>
		<!-- <script type="text/jscript"></script>
			<script type="text/text/javascript"></script> -->
	</head>
	<body>
		<form>
			用户名:<input type="text" name="username" value="" id="username" onblur="testUserName()" placeholder="请输入用户名" /><span id="name_tip"></span><br/>
			密码:<input type="password" name="password" placeholder="请输入密码" /><br/>
			<input type="submit" value="登录" />
		</form>
	</body>
	<script>
			//用户输入内容之后,鼠标光标移出文本输入框---- 失去焦点 触发失去焦点事件
			function testUserName(){
				//通过js的dom方式(document Object Model:文档对象模型编程)
				//通过id获取input标签对象  并且同时获取里面的内容
				var username = document.getElementById("username").value ;
				//alert(username) ;
				
				//假设:如果用户输入的内容不是"eric",可用;否则,不可用
				//获取id="name_tip"的span标签对象
				var nameTip = document.getElementById("name_tip") ;
				
				//判断用户名
				//var reg = /^[A-Za-Z0-9]{6,16}$/ //js的正则表达式
				if(username=="eric"){
					//设置span标签对象的innnerHTML属性,设置内容
					nameTip.innerHTML ="对不起,用户名不可用".fontcolor("red") ;
				}else{
					nameTip.innerHTML ="√".fontcolor("#0F0") ;
				}
			}
	</script>
</html>

二、js的使用方式

  1. 内部方式
    在页面中指定script标签书写js代码
    //:单行注释
    /多行注释/
  2. 外部方式(开发中使用外部方式)
    1). 在js文件夹下新建一个.js文件
    书写js代码
    在当前html页面导入指定js文件
    script标签(有开始,有结束)
    src属性:js/xx.js文件
    2). 好处:html代码和js分离了 (前端开发工程师:需要使用外部方式)
举例:
				document.write("Javascript语言是一个弱类型语言") ;
				alert("对话提示框") ;
  1. js常用函数
    1). 向浏览器输出内容
    document.write(“hello,js!”) ;
    2). 在浏览器中控制台打印内容
    console.log(“hello,javascript!!”) ;
    3). 弹对话提示框
    window.alert(“hello,javacript!!”) ;

三、js的变量以及数据类型

  1. js中变量如何定义:
    1)用var来定义变量,var可以定义任何类型 (在js中创建对象也是var)
    var可以省略不写 (目前不建议)
    2)定义变量,是可以重复定义变量,后面的值会将前面的值覆盖掉 (弱类型语言体现)
    java语言
    int a = 10 ;
    int a = 20 ; 重复定义
    3) 查询数据类型:使用函数typeof(变量名)
    基本数据类型:
    无论是整数还是小数—在Js中都属number类型-- 内置对象(引用类型):Number
    无论是字符串哈市字符–js中都属于string类型-- 内置对象:String
    true/false–js中属于boolean-- 内置对象:Boolean
    object:–内置对象:模板对象:Object
    undefined类型:无意义:因为当前这个变量没有被赋值(未定义变量)
    4)js中的数据类型划分是通过值来确定的!
举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js中变量以及数据类型</title>
		<script>
			var a = 10 ;		//var a = new Number(10) ;numObj = new Number(value)
			var a = 20 ; 
			var b = 3.14 ;
			var c = "hello" ;
			var d = 'a' ;
			var e = true ;
			var f = new Object() ;
			var g ;
			
			document.write("a的值是"+a+",a的数据类型是"+typeof(a)+"<br/>") ;
			document.write("b的值是"+b+",b的数据类型是"+typeof(b)+"<br/>") ;
			document.write("c的值是"+c+",c的数据类型是"+typeof(c)+"<br/>") ;
			document.write("d的值是"+d+",d的数据类型是"+typeof(d)+"<br/>") ;
			document.write("e的值是"+e+",e的数据类型是"+typeof(e)+"<br/>") ;
			document.write("f的值是"+f+",f的数据类型是"+typeof(f)+"<br/>") ;
			document.write("g的值是"+g+",g的数据类型是"+typeof(g)+"<br/>") ;
		</script>
	</head>
	<body>
	</body>
</html>

四、js运算符

  1. 算术运算符:+,-,/,%
  2. 赋值运算符:=
  3. 比较运算符:<,>,<=,>=,==,!=
  4. 逻辑运算符:
    js中
    &&: 有false,则false
    ||: 有true,则true
  5. 逻辑非:非true,则false;非false则true
  6. 三元运算符:(表达式)? 执行true的结果:执行false的结果;
举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js运算符</title>
		<script>
			 var a = 3 ;  //将3赋值给Number类型变量a
			 var b = 4;
			 document.write("sum:"+(a+b)+"<br/>") ; 
			 document.write("sub:"+(a-b)+"<br/>") ; 
			 document.write("mul:"+(a*b)+"<br/>") ; 
			 document.write("div:"+(a/b)+"<br/>") ; 
			 document.write("%:"+(a%b)+"<br/>") ; 
			 document.write("<hr/>") ;
			 
			 var c = 1 ;
			 console.log(true+c) ; 
			 console.log(1+false) ; 
			 //true和false在js中代表两个常量:1,0  (弱类型语言体现)
			 document.write("<hr/>") ;
			 //比较运算符
			 console.log(a>=b) ;
			 console.log(a==b) ;
			 console.log(a<=b) ;
			 console.log(a!=b) ;
			  document.write("<hr/>") ;
			  
			  //逻辑运算符
			  console.log((++a)==3 && (--b)==4) ;
			    document.write("<hr/>") ;
				
				//三元运算符
				var age = 18 ;
				document.write((age>=18)?"成年人":"未成年人") ;
		 </script>
	</head>
	<body>
	</body>
</html>

五、流程语句

  1. 顺序结构语句
  2. 选择结构语句
    1). 选择语句中的switch语句中case语句后面在js中既可以常量也可以变量! (弱类型语言)
    2). java中的switch只能是一个常量
  3. 循环结构语句
举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>流程语句</title>
		<script>
			  var week = 3 ;
			  var b = 3 ; //变量
			  switch(week){
			  case 1 :
					document.write("星期一") ;
					break ;
			  case 2:
					document.write("星期二") ;
					break ;
			  case b: //变量
					document.write("星期三") ;
					break ;	
			  case 4:
					document.write("星期四") ;
					break ;	
			  case 5:
					document.write("星期五") ;
					break ;
			  case 6:
				document.write("星期六") ;
					break ;				
			  case 7:
					document.write("星期日") ;
					break ;		
			 default:
				   document.write("非法数据") ;
				   break;	
			  }
			document.write("<hr/>") ;
			
			//js中---for-in语句  很类上于中的foreach语句:增强for
			/*
				for(var 变量名 in  对象名称){
					
					使用这个变量名    对象名称[变量名]访问属性
				}
			*/
			
			//js中:for-in是用来给自定义对象使用,遍历自定义对象中的属性  (可以可以操作数组)
			//js中如何定义数组
			var arr = [10,20,30,40] ;
			//普通for循环
			for(var i = 0 ; i < arr.length ; i++){
				document.write(arr[i]+"<br/>") ;
			}
			document.write("<hr/>") ;
			for(var i in arr){
				document.write(arr[i]+" ") ;
			}
			
			//定义对象
			function Person(name,age,address,email){  //类似于 java中有参构造
			//追加属性
				this.name = name ;
				this.age = age ;
				this.adress=address;
				this.email = email;	
			}
			document.write("<hr/>") ;
			
			//创建对象
			var p = new Person("高圆圆",41,"西安市","gaoyuayuan@163.com") ;
			//for-in
			for(var i in p){
				document.write(p[i]+"<br/>") ;
			}
		 </script>
	</head>
	<body>
	</body>
</html>

六、js中函数

js中函数 类上与java中定义方法(功能)

  1. js中定义函数:
    function 函数名称(形参列表){
    可以写return语句
    也可以没有return语句
    }
  2. 函数调用
    单独调用(函数里面没有return语句)
    函数名称(实际参数) ;
    赋值调用(有return语句)
    var 变量名 = 函数名称(实际参数);
  3. 定义函数注意事项:
    1)形式参数列表中不能携带数据类型:var是可以定义任何类型 (弱类型语言的一个体现)
    在java中,形式参数必须携带
    public static int add(int a,int b)
    public static double add(double a,double b)
    2)函数中可以不用书写return语句
    3)js中不存在函数重载.如果后面的方法名和前面的方法名相同,后面的函数将前面函数覆盖掉
    如果函数是形式参数个数大于实际参数个数,调用函数时,函数依然可以正常执行,
    由于某个形参没有被赋值,调用的结果:NaN (没有意义)
    如果形式参数个数小于实际参数个数,调用函数依然执行,将多余实际去掉,进行计算!
    4)在函数中有有一个默认数组:arguments
    作用就是将实际参数赋值形式参数
    Java中的main方法
    public static void main(String[] args){}
举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js中函数</title>
			<script>
			 //定义求两个数据之和的函数
			// function add(var a,var b){
			
		   function add( a, b){
		   			  var result = a + b;
		   			  document.write("两个数据之和是:"+result) ;
		   			  // return result ;
		   }
		   function add(a,b,c){//a =10 ,b =20 ,c = 30
				//alert(arguments.length) ;
				for(var i = 0 ; i < arguments.length; i ++){
					alert(arguments[i]) ;
				}
			   var result = a+ b+ c;
			    document.write("数据之和是:"+result) ;
		   }
		 
		//调用
		//单独调用
		add(10,20,30) ;
			
		//赋值调用
		//var result = add(10,30) ;
		//document.write("两个数据之和是:"+result) ;
		 </script>
	</head>
	<body>
	</body>
</html>

七、js中的DOM引入

JavaScript修改系统默认输入法_html_02

举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>练习</title>
		<!-- 
			在文本输入框中输入的月份的值,通过点击查询按钮 来显示季节
					3,4,5 春季
					6,7,8 夏季
					9,10,11 秋季
					12,1,2 冬季
		 -->
	</head>
	<body>
		<input type="text" id="month" placeholder="请您输入月份的值" /><br/>
		<input type="button" onclick="mySearch()" value="点击查询" />
	</body>
		<script>
		//标签中:onclick属性:单击
		function mySearch(){ //事件监听器  编写js函数
			//alert("触发单击")
			
			//获取id="month"所在的input标签对象
			var inputObj = document.getElementById("month") ;
			//通过标签对象获取用户输入的内容: 访问value属性
			var text_month = inputObj.value ;  
			//alert(typeof(text_month)) ;
			//alert(text_month) ;
			
			/*
			3,4,5 春季
			6,7,8 夏季
			9,10,11 秋季
			12,1,2 冬季
			*/
		   
		   //if格式3:
		   //js中的== 将前面的字符串先转换成number然后和后面的整数对比:不会出现类型转换问题!
		   /*
		   if(text_month == 3 || text_month == 4 || text_month==5){
			   alert("春季") ;
		   }else if(text_month == 6 || text_month == 7 || text_month ==8){
			   alert("夏季") ;
		   }else if(text_month == 9 || text_month == 10 || text_month == 11){
			   alert("秋季")
		   }else if(text_month == 1 || text_month ==2 || text_month ==12){
			   alert("冬季")
		   }else{
			   alert("非法数据") ;
		   }
		   */
		  
		  //case后面的语句常量 
		  //在和case语句比较前:需要将String 类型的text_month转换成整数
		  text_month = parseInt(text_month) ; //类型转换函数:将字符串---整数
		  switch(text_month){
		  case 3:
		  case 4:
		  case 5:
					  document.write("春季") ;
					  break ;
		 case 6:
		 case 7:
		 case 8:
					  document.write("夏季") ;
					  break ;
		 case 9:
		 case 10:
		 case 11:
					  document.write("秋季") ;
					  break ;	
		 case 12:
		 case 1:
		 case 2:
					  document.write("冬季") ;
					  break ;	
         default:
					  document.write("您输入的数据不合法") ;
					  break ;
		  }	   
		}
		</script>	
</html>

八、js中的自定义对象

在jd中,对象分为两种
1. 内置对象:
Js本身存在:Array,Date,String,Number,Boolean,正则表达式
2. 自定义对象
1)类上Java中的有参构造方法
定义一个对象
2). function 对象(属性列表){
追加属性…
追加方法…
}
3). 创建对象 var 对象名= new 对象(实际参数列表) ;

举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Js中的自定义对象</title>

		<script>
			 //方式1:定义对象
			 function Person(name,age){
				 //追加属性
				 this.name = name ;
				 this.age = age ;
				 //追加方法
				 this.play=function(){
					 alert("玩足球") ;
				 }
			 }
			 
			 //创建对象
			 var p = new Person("赵又廷",41) ; //给属性赋值
			 
			 //for-in遍历属性
			/* for(var i  in p ){
				 document.write(p[i]) ;
			 } */
			 //访问属性
			 document.write("name是"+p.name+"<br/>") ;
			 document.write("age是"+p.age+"<br/>") ;
			 //访问方法
			 p.play() ;
			 
			 document.write("<hr/>") ;
			 
			 //定义工人对象:Worker  :类上java中无参构造
			 function Worker(){
				 
			 }
			 
			 //无参构造方式创建对象
			 var w = new Worker() ;
			 //对象名w追加属性或者追加方法
			 w.name = "杨德财" ;
			 w.age = 27 ;
			 w.play=function(){
				 document.write("喜欢玩代码...") ;
			 }
			 
			 //访问属性
			 document.write("name是"+w.name+"<br/>") ;
			 document.write("age是"+w.age+"<br/>") ;
			 //访问方法
			 w.play() ;
			
			document.write("<hr/>") ;
				 
				
			//方式3: 直接创建对象 Object:代表任意js对象 (模板对象)
		    
			var s = new Object();
			//追加属性
			s.name = "高圆圆" ;
			s.age = 41 ;
			//追加功能
			s.speak=function(){
				document.write("说英语") ;
			}
			
			//访问属性功能
			//访问属性
			document.write("name是"+s.name+"<br/>") ;
			document.write("age是"+s.age+"<br/>") ;
			//访问方法
			s.speak() ;
			document.write("<hr/>") ;
 			
			
			//方式4:字面值的方式   json字符串  (后期json是一个重点)
			
			
			/*
				json解析跟xml解析	
						xml解析:dom解析(面向对象方式)/sax解析(基于事件方式)
						
							解析速度慢
							
				json:解析速度快 ,格式是一种js语法 (简单直观)	
						
						fastJson 工具
						Gosn
						jsonlib
						jackson---springmvc提供的一种内置的插件
			*/
			/*
			简单格式
			  {
				  
				  "key1":"value1",
				  "key2":"value2",
				  ...
			  };
			  
			  //复杂格式
			  [
				  "students",
				  {
					  "sname":"张三",
					  "age":20,
					  "address":"西安市",
				  },
				  {"sname":"李四","age":25,"address":"咸阳市"},
				  {"sname":"王五","age":30,"address":"北京市"} 
			  ];
			*/
		   var student = {
				//追加属性
				"name":"耿明刚",
				"age":23,
				"address":"南窑国际",
				"email":"gengminggang@163.com",
				//追加功能
				"code":function(){
					alert("日日夜夜coding...") ;
				}
			   
		   } ;
			 
			 
			//调用属性
			document.write("姓名是:"+student.name+"<br/>") ;
			document.write("年龄是:"+student.age+"<br/>") ;
			document.write("住址是:"+student.address+"<br/>") ;
			document.write("邮箱是:"+student.email) ;
			
			student.code() ;
		 </script>
	</head>
	<body>
	</body>
</html>

九、内置对象

  1. String对象的方法
String对象的方法
						charAt(var char):返回指定索引处的字符
						indexOf(var char);查询当前字符第一次在字符串中出现的角标值
						fontcolor(指定颜色标记):给字符串设置字体颜色
						spilt(字符串):通过指定的字符串将当前大串拆分成字符串数组
						substring(start, end):截取功能
举例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>内置对象String</title>

		<script>
			 //如何创建字符串对象
			 //方式1:var对象名 = new  String("xx") ; 
			// var s1 = new String("hello") ;
			// var s2 = new String("hello") ;
			
			var s1 = "hello" ;
			var s2 = "hello" ;
			 document.write((s1==s2)+"<br/>") ;
			 //== 比较的是地址值是否相同  new 对象:都分别需要在堆内存中开辟空间
			 //如果常量赋值:直接在常量池中,有这个值,直接返回地址值;没有这个值,开辟常量池内存空间
			 //valueOf():比较的内容是否相同
			 document.write((s1.valueOf()==s2.valueOf())+"<br/>")
			 document.write("hr/>") ;
			 
			 //定义一个字符串
			 var str = "helloworldjavaEE" ;
			 document.write("charAt():"+str.charAt(4)+"<br/>") ;
			 document.write("indexOf():"+str.indexOf('a')+"<br/>") ;
			 
			 //substr(beginindex,length):从指定位置开始截取指定长度
			 document.write("substr():"+str.substr(5,5)+"<br/>") ;
			 
			 //包前不包后(endindex的位置取不到的,endindex-1)
			 document.write("substring():"+str.substring(5,9)+"<br/>") ;
			 //给字符串添加颜色属性
			 document.write("fontcolor():"+str.fontcolor("red")+"<br/>") ;
			 
			 var classes = "JavaEE-Php-Python-test-Web-C" ;
			 //分割功能
			 var stryArray = classes.split("-") ;
			 //遍历
			 for(var i = 0 ; i < stryArray.length ; i ++){
				 alert(stryArray[i]) ;
 			 }
		 </script>
	</head>
	<body>
	</body>
</html>
  1. Date对象的方法
举例1:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Date内置对对象</title>
		<!-- 
			Js的内置对象Date
				创建对象
				  var 对象名 = new Date();
		 -->
		 <script>
			 
			//创建日期对象
			 var date = new Date() ;
			 //alert(date) ;
			 
			 //常用的方法:获取年份
			 //getYear():并不是完整的年份.而是当前年份距离1900 年差值
			 //getFullYear():获取
			 var year = date.getFullYear();
			 document.write(year+"年") ;
			 
			 //获取月份:getMonth():0-11之间的整数
			 
			 var month = date.getMonth()+1 ;
			 document.write(month+"月") ;
			 
			 //获取月中的每一天:getDate()
			 var month_day = date.getDate() ;
			 document.write(month_day+"日  ") ;
			 //getHourer():一天中的小时
			 document.write(date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()) ;
			// var hour = date.getHours() ;
			 //alert(hour) ;
			 
			 
		 </script>
	</head>
	<body>
	</body>
</html>

扩展:网页定时器:
窗口对象 顶级对象可以不写
window.setInterval(“任务()”,毫秒数):重复执行.每经过毫秒数后执行定时任务
window.setTimeOut(“任务()”,“毫秒数”):经过毫秒数后执行一次任务

举例2:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>定时器</title>
	</head>
	<body>
		<h3>网页时钟</h3>
		当前系统时间是:<span id="spanTip"></span>
	</body>
	<script>
		function myTask(){
			//需要创建Date对象,拼接日期和时间
			var date = new Date() ;
			var dataStr = date.getFullYear()+"-"+(date.getMonth()+1)+"-"
			+date.getDate() 
			+"  "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds() ;
			
			//获取id="spanTip"的标签对象
			var spanObj = document.getElementById("spanTip") ;
			//设置innerHTML属性		
			spanObj.innerHTML = "<strong>"+dataStr+"</strong>" ; //给span设置文本内容
		}
	
		
		
		//开启定时器
		setInterval("myTask()",1000) ;//每经过1秒执行这个任务	
	</script>
</html>