javaweb-javascript

1.定义:

       JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,
       内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言

2.组成部分:(W3C文档中可查找)

    ECMAScript:js基础语法(规定 关键字 运算符 语句 函数等等...)
    BOM:浏览器对象模型
    DOM:文档对象模型 

3.作用:

    1.修改html页面的内容
    2.修改html的样式
    3.完成表单的验证

4.数据类型:

1.原始类型:(5种)
        Null
        String
        Number
        Boolean
        Undefined
        通过 typeof运算符可以判断一个值或者变量是否属于原始类型,若属于原始类型,他还可以判断出属于那种原始类型
            typeof 变量|值;
        若变量为null,使用typeof弹出的值 object
        
      注意:  使用typeof的返回值
            undefined - 如果变量是 Undefined 类型的 
            boolean - 如果变量是 Boolean 类型的 
            number - 如果变量是 Number 类型的 
            string - 如果变量是 String 类型的 
            object - 如果变量是一种引用类型或 Null 类型的 

  2. 引用类型:(了解)

var s= new String();
alert(typeof s);
//此时的s就是一个对象object

 引用类型通常叫做(class)也就是说,遇到引用值,所处理的也就是对象

 注意:ECMAScript 并不是真正意义上的类,

            ECMAScript定义了“对象定义”逻辑上等价于其他语言上的类。

5.变量声明:

1.var 变量名=初始化值;
2.var 变量名;
  变量名=初始化值;
  注意:
        var可以省略 建议不要省略
        一行要以分号结尾,最后一个分号可以省略,建议不要省略

3.运算符:

运算符:
    比较运算符: > >= < <=
        若两边都是数字 和java一样
        若一边为数字,另一边为字符串形式的数字,将字符串形式的数字转换成数字再进行比较   3>"2"
        若一边为数字,另一边为字符串,返回一个false   3>"hello"
        两边都是字符串的时候,比较ascii
    等性运算符 == ===
        == :只判断值是否相同
        ===:不仅判断是否相同,还要判断类型是否相同
语句:
    if语句 和java一样
    for while 语句和java一样
    switch 和java一样(区别,switch 后面跟字符串. 还可以跟变量)

 

6.JS和html的整合:

    方式1:在页面上直接写
        将js代码放在 <script></script>标签中,一般放在head标签中
    方式2:独立的js文件
        通过script标签的src属性导入

7.js事件驱动函数

 只有发生事件的时候函数才会执行,通过事件驱动函数

1.函数定义格式:

方式1:(常用)

function 函数名(参数){
                函数体;
            }

注意:

            函数不用声明返回值类型 
            参数不需要加类型
            函数调用       函数名(参数)

function add (a,b)
{
alert(a+b);
}

//调用
add(2,2);

方式2:
        var 函数名=function(参数)
        {
            函数体;
        }

2.js中的事件:

        常见事件:

        单击:  onclick
        表单提交: onsubmit 加在form表单上的 οnsubmit="return 函数名()"  注意函数返回值为boolean类型
        页面加载: onload
        元素失去焦点:onblur   比如在一个文本框输入完内容后点击其他文本框以外的部位                                                                 

        ...........

3.js事件和函数的绑定:

 方式1:  通过标签的事件属性   <xxx οnclick="函数名(参数)"></xxx>案发

<script>
    function BtnClick()
     {
       alert(试试就试试);
     }
</script>

<input type ="button" value="点击我试试" onclick="BtnClick()">
//注意:如果没有onclick="BtnClick(),网页只会出现  点击我试试


 方式2:给元素派发事件

           1. document.getElementById("id值").οnclick=function(参数){....}
           2. document.getElementById("id值").οnclick=函数名(一种是匿名函数,另外一种是写好函数再调用)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			function btnCli(){
				alert(44944);
			}
			
			function init(){
			alert("页面加载成功");                   //***1
				
			}
			
			var  btn2cli=function(){
				alert("244944");
			}
			
		</script>
        document.getElementById("btn2").onclick=btn2cli;//***2
	</head>
	<body onload="init()">
		<input type="button" value="点击我试试" onclick="btnCli()">
		
		<input type="button" value="点击试试2" id="btn2">
	</body>
                                                   //***3
</html>

此时上面的代码会因为获取到的onclick是空而出现问题

解析:

js是一个解释型语言,他从上往下逐步翻译,走到底**2时

document.getElementById("btn2")他是并获取不到下面的btn2属性的

改正1:在**3位置放,此时内存中存在

<script>
    document.getElementById("btn2").onclick=btn2cli;		
</script>

改正2:但如果还想上面的head语句块中执行时

function init()
{
  //alert("页面加载成功");
  document.getElementById("btn2").onclick=btn2cli;
 }

就是在页面加载成功的时候它才做这个事情也是可以的

注意:


           内存中应该存在该元素才可以派发事件
        a.将方式2的js代码放在html页面的最下面
        b.在页面加载成功之后在运行方式2的js代码  onload事件.

 

 

 

8.js获取元素:

1. 获取元素方式1:    var obj=documnet.getElementById("id值");

2.获取元素的value值:  obj.value;

3.获取元素的标签体中的内容 : obj.innerHTML;

 

9.应用实例1-完成表单的验证

以姓名和密码校验证的表单为例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			function checkForm(){
				
				//获取用户名及其内容
				var usernameObj=document.getElementById("username");
				var username=usernameObj.value;
				//判断value是否为空 若为空不能提交表单,
				if(username==null || username == ""){
					alert("用户名不能为空");
					return false;
				}
				
				//获取密码及其内容
				//1.获取密码元素
				var pwdObj=document.getElementById("password");
				
				//2.获取密码的值
				var pwdValue=pwdObj.value;
				
				//3.判断
				if(pwdValue==null || pwdValue==""){
					alert("密码不能为空");
					return false;
				}
				
				return true;
			}
		</script>
	</head>
	<body>
		<form action="#" method="get" onsubmit="return checkForm()">
			姓名:<input name="username" id="username"/><br>
			密码:<input type="password" name="password" id="password"><br>
			<input type="submit" value="保存"/>
			<input type="reset" />
		</form>
	</body>
</html>

10.应用部分

加载方式:

body加载

<body οnlοad="init()">

............

</body>

window加载

<script>
   //window.onload == onload相同
   //window.setInterval()== setInterval()相同


   οnlοad=function()

   {
           ..........
   }

  </script>

定时器:(BOM-window对象):

 1. var id=setInterVal(code,毫秒数):每隔指定的毫秒数执行一次函数 周期

 2.var id=setTimeout(code,毫秒数):延迟指定的毫秒数之后 只执行一次函数

清除定时器:
 1.clearInterval(id);
 2.claerTimeout(id);

bom(浏览器对象模型)总结:

先看几张w3c文档介绍style属性的表部分图

 

 

1.bom它是无规范的,但厂商们的默认的统一规范:

 

   所有的浏览器都有5个对象:

  Window:窗口
  Location:定位信息 (地址栏)
  History:历史
 Navigator对象属性,浏览器版本神魔的,    了解
Screen频幕的信息:大小,分辨率......。       了解

1.window对象详解:

    如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,
    并为每个框架创建一个额外的 window 对象。
    常用的属性:
        通过window可以获取其他的四个对象
            1.1window.location 等价域 location
            1.2 window.history 等价于 history

    常用的方法
        消息框
            alert("...."):警告框
            confirm("你确定要删除吗?"):确定框 返回值:boolean
            prompt("请输入您的姓名"):输入框 返回值:你输入的内容
        定时器
            设置定时器
                setInterval(code,毫秒数):周期执行
                setTimeout(code,毫秒数):延迟多长事件后 只执行一次.
                
                例如:
                    1.setInterval(showAd,4000);
                    2.serInterval("showAd()",4000);
            
            清除定时器
                clearInterval(id):
                clearTimeout(id):
        打开和关闭
            open(url):打开
            close():关闭

2.location:定位信息    
    常用属性:
        href:获取或者设置当前页面的url(定位信息)
        
        location.href; 获取url
        location.href="...";设置url 相当于 a标签

3.history:历史
       back();后退
       forward():向前
    ★go(int)
        go(-1) 相当于 back()
        go(1) 相当于 forward()


//制作一个按钮前进
<body>
		我是a页面<br />
		<a href="b.html">b.html</a><br>
		<input type="button" value="前进" onclick="forw()" />
	</body>
	<script>
		//前进
		function forw(){
			history.go(1)
		}
</script>
//在设置一个b.html就可以跳转到b了

 

 

1.案例实现-打字机

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var s="好好学习,天天向上!";
			var i=0;
			var divObj;
			
			function init(){
				divObj=document.getElementById("divId");
				setInterval(show,200);
			}
			
			//往div中写内容
			function show(){
				i++;
				var s_=s.substring(0,i);
				//往div中设置内容
				divObj.innerHTML=s_;
				
				//当字符串写完的时候 重新开始
				if(i==s.length){
					i=0;
				}
			}
		</script>
	</head>
	<body onload="init()">
		<div id="divId"></div>
	</body>
</html>

2.案例实现-轮播图片

<script>
		
		var i=1;
		
		function init(){
			//创建一个定时器
			setInterval(changeImage,1000);
			
		}
		
		//更改图片
		//<img id="luboid" src="../img/1.jpg"/>
		function changeImage(){
			//获取图片元素
			var imgObj=document.getElementById("luboid");
			i++;
			//修改图片元素的src属性
			imgObj.src="../img/"+i+".jpg";
			
			//当i>3的时候 重置i
			if(i>=3){
				i=0;
			}
			
		}
	</script>

注意:1    ../的使用,次代码是运行在Hbuider下的,所以定时更换照片只用更改src的属性即可。

           2.   <body οnlοad="init()">  ... </body>的使用(body加载方式)

    

 

3.案例实现-定时弹出广告

 效果:打开页面后4秒,展示广告,2秒之后,该广告隐藏.再停2秒,继续展示.

 步骤分析:
    1.确定事件
    2.编写函数
        a.获取元素
        b.操作元素

先在网页的指定的部位隐藏(display: none)要弹出的照片

<div id="ad" style="width:100%;display: none;">
			<img src="../img/ad_.jpg" width="100%" />
</div>

然后在script标签中写入具体实现的过程

<script>
		//记录次数
		var i=0;
		//定时器id
		var timer;

		onload=function(){
			//设置定时器 间隔4秒后展示图片
			timer=setInterval(showAd,4000);
		}
		
		//展示广告方法 展示2秒之后隐藏
		function showAd(){
			//展示的次数加1
			i++;
			
			//若i=3 清空由setinterval设置的定时器
			if(i==3){
				clearInterval(timer);
			}
			
			//1.获取广告
			var divObj=document.getElementById("ad");
			
			//2.修改广告的样式 将其显示
			divObj.style.display="block";
			
			//3.2秒之后隐藏 只执行一次
			setTimeout(hideAd,2000);
			
		}
		
		//隐藏广告
		function hideAd(){
			//1.获取广告
			var divObj=document.getElementById("ad");
			
			//2.修改样式 将其隐藏
			divObj.style.display="none";
		}
	</script>

补充://修改js的样

             操作css属性
            document.getElementById("id").style.属性="值"
            属性:就是css中属性 css属性有"-" 例如:backgroud-color
            若有"-" 只需要将"-"删除,后面第一个字母变大写即可

 

function btnCli(){
			//1.获取元素
			var obj=document.getElementById("divid0");
			//alert(obj)
			
			//2.操作元素
			//添加背景色  按照rgb比例的颜色
			obj.style.backgroundColor="#ff0";
			
			//添加边框     1个像素,  实体  红色
			obj.style.border="1px solid red";
			
			//添加宽和高
			obj.style.width="100px";
			obj.style.height="100px";
}

 

11.常见事件:

常见的事件:
        焦点事件:★
            onfocus
            onblur
        表单事件:★
            onsubmit
            onchange 改变
        页面加载事件:★
            onload
        
        鼠标事件(掌握)
            onclick
        鼠标事件(了解)
            ondblclick:双击
            onmousedown:按下
            onmouserup:弹起
            onmousemove:移动
            onmouserover:悬停
            onmouserout:移出
        键盘事件(理解)
            onkeydown:按下
            onkeyup:弹起
            onkeypress:按住

 

12.了解:

 

13.应用实例-隔行换色

获取元素:
    document.getElementById("id"):通过id获取一个元素
    document.getElementsByTagName("标签名"):通过标签名获取一种元素(多个)返回一个数组
Array:
    常用属性:
        length:数组的长度

关键代码:

<script>
			//页面加载成功
			onload=function(){
				//1.获取所有的tr
				var arr=document.getElementsByTagName("tr");
				//alert(arr);
				//alert(arr.length);
				
				//2.判断奇偶数 添加不同的样式 遍历数组
				for(var i=1;i<arr.length;i++){
					if(i%2==0){
						arr[i].style.backgroundColor="#FFFFCC";
					}else{
						arr[i].style.backgroundColor="#BCD68D";
					}
				}
				
			}
</script>

14.应用实例-全选或者全不选

1.确定事件 最上面那个复选框的单击事件 onclick
    2.编写函数:让所有的复选框和最上面的复选框状态保持一致
        a.获取最上面这个复选框选中状态 通过checkbox的checked属性即可
        b.获取其他的复选框,设置他们的checked属性即可
            可以通过以下两种方案获取元素
                document.getElementsByClassName():需要给下面所有的复选框添加class属性
                document.getElementsByName():需要给下面所有的复选框添加name属性

首先给每一行加上一个class="itemSelect"

eg:<td><input type="checkbox" class="itemSelect"></td>

然后给最上层的框的点击属性中加this

<th><input type="checkbox" οnclick="selectAll(this)" ></th>

其次执行下面操作

<script>
			function selectAll(obj){
				//获取当前复选框的选中状态
				var flag=obj.checked;
				
				//获取所有的复选框
				var arr=document.getElementsByClassName("itemSelect");
				
				//遍历数组,将所有的复选框和flag相同
				for(var i=0;i<arr.length;i++){
					arr[i].checked=flag;
				}
			}
</script>

15.dom(文档对象模型)

当浏览器接受到html代码的时候,浏览器会将所有的代码装载到内存中,形成一棵树(document树)


    节点(Node)
        文档节点 document
        元素节点 element
        属性节点 attribute
        文本节点 text
    获取节点:
        通过document可以获取其他节点:
            常用方法:
                document.getElementById("id值"):获取一个特定的元素
                document.getElementsByTagName("标签名"):通过标签名获取一种元素(多个)
                document.getElementsByClassName("class属性的值"):通过class属性获取一类元素(多个)
                document.getElementsByName("name属性的值"):通过name属性获取一类元素(多个)


        设置获取获取节点的value属性
            dom对象.value;获取
            dom对象.value=" 值";设置
        设置或者获取节点的标签体
            dom对象.innerHTML;获取
            dom对象.innerHTML="值";设置
        获取或者设置style属性
            dom对象.style.属性;获取
            dom对象.style.属性="值";设置
        获取或者设置属性
            dom对象.属性
/
对于htmldom的操作若在js或者htmldom 查找不到 去查找xml dom
    关于文档的操作 在 xml dom 的document中
    关于元素的操作 在 xml dom 的element中
        appendChild(dom对象):在一个元素下添加孩子

16.应用实例-左右选中

1.确定事件,按钮的单击事件
2.编写函数:
        点击移动单|多个的:
            a.获取左边选中的选项  select对象.options--数组
                遍历数组 判断是否选中 option对象.selected
            b.将其追加到右边的下拉选中
                rightSelect对象.appendChild(option);
        点击移动所有的
            a.获取左边的所有的选项
            b.一个个的追加过去

单个移动

<script>
onload=function(){
		 	//给单移按钮派发事件
		 	document.getElementById("toRight1").onclick=function(){
		  //获取左边所有的option
		  var arr=document.getElementById("left").options;
		 		

		 //遍历数组 判断是否选中
		 for(var i=0;i<arr.length;i++){
		 //判断是否选中 若选中 则追加(移动)到右边的select中
		 if(arr[i].selected){
		 								 
        document.getElementById("right").appendChild(arr[i]);
		 break;
		 }
		 }
		 }
</script>

多个移动:去掉break,同时在里面加上i--

原因:l两个相邻的会是剪切的行为,默认的是选中一个,会导致移动只移动一个,所以加上i--。

全部移动:

 

17数组总结:

数组:


    语法:
        new Array();//长度为0
        new Array(size);//指定长度的
        new Array(e1,e2..);//指定元素
        非官方
            var arr4=["aa","bb"];
    常用属性:
        length


    注意:


        1.数组是可变的

var arr1 = new Array();
alert(arr[1]);
   结果:undefined

var arr2 = new Array(1,2,3);
arr2[3]=4;
alert(arr2[3]);
   结果:4

        2.数组可以存放任意值
    常用方法:(了解)
        存放值:对内容的操作
            pop():弹    最后一个
            push():插入 到最后
            
            shift():删除第一个
            unshift():插入到首位
        打印数组:
            join(分隔符):将数组里的元素按照指定的分隔符打印
        拼接数组:
            concat():连接两个或更多的数组,并返回结果。
        对结构的操作:
            sort();排序
            reverse();反转

 

18 应用实例-省市联动

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			// 定义二维数组:
			var arr = new Array(4);
			arr[0] = new Array("哈尔滨","齐齐哈尔","大庆","佳木斯");
			arr[1] = new Array("长春市","吉林市","四平市","通化市");
			arr[2] = new Array("沈阳市","锦州市","大连市","铁岭市");
			arr[3] = new Array("郑州市","洛阳市","安阳市","南阳市");
		</script>
	</head>
	<body>
		<form action="#" method="get">
			<input type="hidden" name="id" value="007"/>
			姓名:<input name="username" value="jianqi"/><br>
			密码:<input type="password" name="password"  value="123" disabled="disabled"><br>
			性别:<input type="radio" name="sex" value="1" checked="checked">男
				<input type="radio" name="sex" value="0">女
				<br>
			爱好:<input type="checkbox" name="hobby" value="eat">吃
				<input type="checkbox" name="hobby" value="drink" checked="checked">喝
				<input type="checkbox" name="hobby" value="sleep" checked="checked">睡
				<br>
			头像:<input type="file" name="photo"><br>
			籍贯:
				<select name="pro" onchange="selCity(this.value)">
					<option >-请选择-</option> 
					<option value="0">黑龙江</option>
					<option value="1">吉林</option>
					<option value="2">辽宁</option>
					<option value="3">河南</option>
				</select>
				<select name="city">
					<option >-请选择-</option> 	
				</select>
			<br>
			自我介绍:
				<textarea name="intr" cols="40" rows="4">good!</textarea>
			<br>
			<input type="submit" value="保存"/>
			<input type="reset" />
			<input type="button" value="普通按钮"/>
		</form>
	</body>
</html>
<script>
	function selCity(index){
		//alert(index);
		var cities=arr[index];
		
		//获取市的下拉选
		var citySelObj=document.getElementsByName("city")[0];
		
		//先初始化
		citySelObj.innerHTML="<option >-请选择-</option>";
		
		//遍历数组 组装成option 追加到select
		for(var i=0;i<cities.length;i++){
			citySelObj.innerHTML+=("<option>"+cities[i]+"</option>");
		}
	}
</script>
<!--
	
-->

19.

引用类型总结:
    原始类型中的String Number Boolean都是伪对象,可以调用相应的方法
    Array:数组
    String:
        语法:
            new String(值|变量);//返回一个对象
            String(值|变量);//返回原始类型

var s="aa";
var s1=new String(true);
alert(typeof s1);
  结果:object 因为是new出来的
var s2 =String(false);
alert(typeof s2);
  结果:string


        常用方法:
            substring(start,end):[start,end)
            substr(start,size):从索引为指定的值开始向后截取几个
            
            charAt(index):返回在指定位置的字符。
            indexOf(""):返回字符串所在索引
            
            replace():替换
            split():切割
            
        常用属性:length    
    Boolean:
        语法:
            new Boolean(值|变量);
            Boolean(值|变量);
            非0数字 非空字符串 非空对象 转成true 是”“的话是false
    Number
        语法:
            new Number(值|变量);
            Number(值|变量);
        注意:
        
            null====>0 
            fale====>0 true====>1
            字符串的数字=====>对应的数字
            其他的NaN
    Date:
        new Date();
        常用方法:
            toLocalString()
    RegExp:正则表达式
        语法:
            直接量语法  /正则表达式/参数
            直接量语法  /正则表达式/
            
            new RegExp("正则表达式")
            new RegExp("正则表达式","参数") 
            参数:有两个
                i:忽略大小写
                g:全局
            常用方法:拿正则去匹配字符串
                test() :返回值为boolean

var pattern = /正则表达式/;

// 匹配数字 [0-9]  \d
// 匹配所有英文字符 [a-zA-Z]  
// 匹配单词字符 [a-zA-Z0-9_] \w
// 匹配任意 .
// 匹配起始  ^  匹配结束  $
// 匹配次数 {m,n}  最少出现 m 次,最多出现 n 次
//  {m, } 最少出现 m 次, 没有上限
//  {0, } 0到多次 *
//  {1, } 1到多次 +
//  {0,1} 0到1次 ?

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<script>
		var r1=/^[0-9]$/;匹配一个数字
		var i=1;
		//alert(r1.test(i)); false
		
		var r2=/^[a-z0-9_-]{3,16}$/
		var s="12";
		//alert(r2.test(s));//false
		
		s="123"
		alert(r2.test(s));//true
	</script>
	<body>
	</body>
</html>


    Math:
        Math.常量|方法
        Math.PI
        Math.random()  [0,1)
        
    全局:
        ★
        decodeURI() 解码某个编码的 URI。 
        encodeURI() 把字符串编码为 URI。

        Number():强制转换成数字
        String():转成字符串
        
        parseInt():尝试转换成整数
        parseFloat():尝试转换成小数
        
        eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。 
        

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值