JavaScript4.26学习内容总结

本文详细介绍了JavaScript中的Array内置对象,包括创建数组的三种方式及其特点。此外,文章深入探讨了JavaScript自定义对象的四种创建方法,以及如何为对象添加属性和方法。最后,文章讲解了JavaScript中常用的事件编程,如点击、双击、焦点、失去焦点和选项卡变化事件,展示了如何在实践中应用这些事件来实现动态交互效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.JavaScript内置对象之Array

1.创建Array对象三种方式

方式1

方式2

方式3

二、JavaScript自定义对象的方式

1.JavaScript自定义对象的方式1

2.JavaScript自定义对象的方式2

1)定义一个对象,不携带参数了

2)创建对象

3)追加属性

4)追加方法

5)输出这个人的基本信息

6)调用方法

3.JavaScript自定义对象的方式3

1)直接创建对象

2)追加属性

3)追加方法

4)打印出手机信息

5)调用方法

4.JavaScript自定义对象的方式4

 1)创建一个具体的类

2)追加属性

3)追加方法

4)访问方式

5)访问方法

三、JavaScript常用事件编程

1.单击点击事件函数

2.双击点击事件函数

3.获取焦点事件函数

4.失去焦点事件函数

5.选项卡发生变化的事件

1)定义函数:选项卡发生变化的事件

2)通过id="pro" 所在的select标签,获取它的标签对象

3)获取下拉菜单的内容

4)获取id="city"所在的select标签对象

5)判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"

6)定义一个城市数组

7)遍历数组,获取每一个城市,拼接省份所属市


一.JavaScript内置对象之Array

在js中Array对象特点,跟Java中的数组不一样的,
 js是一个弱类型语言,数组对象中不存在角标越界,元素可以不断扩容,而且js数组对象可以存储任何类型的元素

1.创建Array对象三种方式

方式1

var  数组对象名 = new Array() ;//不指定长度
var arr=new Array();
/*分配数组元素
数组的对象名称[索引值]=实际值;  索引值从0开始*/
arr[0]=10;
arr[1]=20;
arr[2]=30;
arr[3]=40;
//对象名.length属性:获取长度
alert(arr.length);	
for(var i=0;i<arr.length;i++){
	document.write(arr[i]+"<br/>");
}

方式2

var  数组对象名 = new Array(size) ;//指定数组长度
var arr=new Array(4);
/*分配数组元素
数组的对象名称[索引值]=实际值;  索引值从0开始*/
arr[0]=10;
arr[1]=20;
arr[2]=30;
arr[3]=40;
arr[4]=50;
//对象名.length属性:获取长度
alert(arr.length);
for(var i=0;i<=arr.length-1;i++){
	document.write(arr[i]+"<br/>");
}

方式3

var  数组对象名 = new Array([元素1,元素2,...]) ;
//它可以简化为
var  数组对象名 = [元素1,元素2,...] ;
var arr=[10,20,30,40,50,"helloworld",'a',false,new Object()];
//对象名.length属性:获取长度
alert(arr.length);
for(var i=0;i<arr.length;i++){
document.write(arr[i]+"<br/>");

虽然可以存储任何类型,但是实际开发中,具体的元素类型肯定时统一的

不管js还是java,数组都有一个length属性:获取数组长度

二、JavaScript自定义对象的方式

1.JavaScript自定义对象的方式1

定义一个对象,格式和定义函数相同的,形式参数不能带var

//方式1:
function 对象名(形式列表...)
//定义一个对象
function 对象(属性1,属性2,属性3...){  //属性就是某个真实世界事物的特征
	//给属性赋值
	//给对象添加功能(方法)
}
创建对象
var 对象名 = new 对象(实际参数1,实际参数2,实际参数3....)

具体实例

1)定义一个人对象

//定义一个人对象 
function Person(name,age,gender,address){//姓名,年龄,性别,住址  属性

2)给属性值

//给属性赋值
//this.属性名称 = 形式参数值;			
//=号左边name:就相当于要给Person对象添加name值		
this.name = name ;//=号右边name 当前形式参数里面的name
this.age = age ;
this.gender = gender ;
this.address = address; 

3)给对象添加功能(方法)

//人会说英语
//this.方法名 = function(){}
this.speak = function(a){ //方法里面参数   a="英语"
    alert("会说"+a) ;//弹出提示框
}
//人会玩王者荣耀
this.playGame = function(){
	alert("会玩"+"王者荣耀") ;
}

4)创建一个具体的人

//创建一个具体的人:创建对象
			//var 对象名 = new 对象(实际参数1,实际参数2,实际参数3....)
			var p = new Person("xxx",20,"女","xxxx") ;

5)输出这个人的基本信息

//输出这个人的基本信息
//对象名.属性名 =获取内容
document.write("这个人的姓名是:"+p.name+",这个人的年龄是:"+p.age+",性别是:"+p.gender
			+",住址是:"+p.address) ;

6)调用方法

//调用方法
//对象名.方法名() ;	
p.speak("英语") ;
p.playGame() ;

2.JavaScript自定义对象的方式2

1)定义一个对象,不携带参数了

//定义一个对象
function Person(){
				
}

2)创建对象

//创建对象 人对象
var p=new Person();

3)追加属性

//自己追加属性
//对象名.追加的属性名称=实际值;
p.name="xxx";
p.age=19;
p.gender="男";
p.address="xx";

4)追加方法

//追加方法
//对象名.追加的方法名=function(空参/带参数){...}
p.speak=function(a){
	alert("会说"+a);
}
p.playGame=function(b){
	alert("会玩"+b);
}

5)输出这个人的基本信息

document.write("这个人的姓名是"+p.name+","+"年龄是"+p.age+","+"性别是"+p.gender+","+"住址是"+p.address);

6)调用方法

p.speak("英语");
p.playGame("王者荣耀");

3.JavaScript自定义对象的方式3

利用js内置对象:Object,代表的所有对象的模板

//利用js内置对象:Object,代表的所有对象的模板!
var 对象名 = new Object() 

1)直接创建对象

//直接创建对象
var p = new Object() ;

2)追加属性

//追加属性
//对象名.属性名 = 值;
p.brand = "华为mate30pr0" ;// brand:品牌
p.price = 4699 ; //price:价格
p.color = "粉翠绿" ; //color:手机颜色
p.memory = "64G" ; //memory:手机内存

3)追加方法

//追加方法
//对象名.追加的方法名 = function(空参/带参数) {...}	
//打电话
p.call = function(toName){//高圆圆
	alert("这个手机给可以给"+toName+"打电话了") ;
}
//发短信
p.sendMessage = function(){
	alert("可以发短信") ;
}

4)打印出手机信息

//打印出手机信息
document.write("手机品牌是:"+p.brand+",它的价格是:"+p.price+",机身颜色是:"+p.color+",它的机身内存是:"+p.memory) ;

5)调用方法

p.call("高圆圆") ;
p.sendMessage() ; 

4.JavaScript自定义对象的方式4

后期经常用到(重点),json数据格式(也称为 "字面量值的方式") 

json:Js对象简谱,是一种数据交互的格式(体现,前后端交互,使用json传参)

json数据解析速度非常快!

var 对象名 = {"key1":value1,"key2":value2....}

现在描述一个具体学生事物,有姓名,年龄,性别,学号这个几个属性    

 1)创建一个具体的类

 var student = {

 }

2)追加属性

//追加属性
"name":"xxx",
"age":19 ,
"gender" :"男",
"address":"xxx",

3)追加方法

 //追加方法:
//"方法名":function(){...}						 
//学习
"study":function(){
		alert("学习xxx") ;
}

4)访问方式

//访问方式:   var 值 = 对象名.key	 ;		
document.write("学生的姓名是:"+student.name+"<br/>") ;
document.write("学生的年龄是:"+student.age+"<br/>") ;
document.write("学生的性别是:"+student.gender+"<br/>") ;
document.write("学生的住址是:"+student.address+"<br/>") ;

5)访问方法

//访问方法
//对象名.方法名() ;
student.study() ;

三、JavaScript常用事件编程

这些所有的事件在标签上 只需要在事件名称前面加上on..,将指定的事件绑定到onxx属性上
        
       1)点击相关的事件
                  单击  click    -- onclick属性
                  双击  dbclick  -- ondblick属性
       2)焦点事件
                   获取焦点  focus ----> onfocus属性
                   失去焦点  blur ----> onblu       
       3)选项卡发生变化的事件,一般用在select下拉菜单中
                   事件名称 change  ---->onchange属性

1.单击点击事件函数

<body>
		<input type="button" value="click" onclick="testClick()"/>
</body>
<script>
		//单击点击事件函数
		function testClick(){
			alert("单击事件触发了");
</script>

2.双击点击事件函数

<body>
		<input type="button" value="dbclick" oncdblclick="testDbClick()"/>
</body>
<script>
		//双击点击事件函数
		function testDbClick(){
			alert("双击事件触发了");
</script>

3.获取焦点事件函数

<body>
    用户名:<input type="text" value="请输入用户名" id="username" 
		onfocus="textFocus()" />
</body>
<script>
    //获取焦点事件函数
		function textFocus(){
			//将文本输入框的value属性值清空
			//dom操作:通过id="username"获取input标签对象
			var a=document.getElementById("username");
			a.value="";//清空就是定义一个空字符串
		}
</script>

4.失去焦点事件函数

<body>
    用户名:<input type="text" value="请输入用户名" id="username" onblur="testBlur()" /><span id="tip"></span>
</body>
<script>
    //失去焦点事件函数
		function testBlur(){
			//需求:当鼠标移除文本输入框,触发失去焦点事件
			//获取文本输入的内容,判断它的内容是否是王炜斌,如果不是,在文本输入框后面提示
			//1)获取文本输入框的内容
			var username= document.getElementById("username").value;
			//2)获取id="tip"所在的span标签对象
			var a=document.getElementById("tip");
			//逻辑判断
			if(username!="xxx"){
				a.innerHTML="×".fontcolor("red");
			}else{
				a.innerHTML="√".fontcolor("green");
			}
			
		}
</script>

5.选项卡发生变化的事件

<body>
籍贯:
    <select onchange="testChange()">
	    <option value="请选择">请选择</option>
	    <option value="陕西省">陕西省</option>
	    <option value="山西省">山西省</option>
	    <option value="广东省">广东省</option>
    </select>
</body>

1)定义函数:选项卡发生变化的事件

function testChange(){

}

2)通过id="pro" 所在的select标签,获取它的标签对象

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
		
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象
        var province = document.getElementById("pro");
}
</script>

3)获取下拉菜单的内容

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
		
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;
}
</script>

给第二个select标签(城市所在的下拉菜单),获取它的标签对象,动态拼接城市

4)获取id="city"所在的select标签对象

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;

        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;
}
</script>

5)判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;
        //获取id="city"所在的select标签对象

        var city =  document.getElementById("city") ;
        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){
				
			}
			
			if(province=="山西省"){
				
				
				
			}
			
			if(province=="广东省"){
			
				}
				
			}
}
</script>

6)定义一个城市数组

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;

        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;

        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){

				//定义一个城市数组
				var arr = ["西安市","渭南市","咸阳市","宝鸡市"] ;
			}
			
			if(province=="山西省"){

				//定义一个城市数组
				var arr = ["太原市","晋中市","临汾市","大同市"] ;
			}
			
			if(province=="广东省"){

			    //定义一个城市数组
				var arr = ["广州市","东莞市","佛山市","深圳市"] ;
				
			}
}
</script>

7)遍历数组,获取每一个城市,拼接省份所属市

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;

        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;

        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){

				//定义一个城市数组
				var arr = ["西安市","渭南市","咸阳市","宝鸡市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="西安市">西安市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
                }
			}
			
			if(province=="山西省"){

				//定义一个城市数组
				var arr = ["太原市","晋中市","临汾市","大同市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="太原">太原市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
				}
                
			}
			
			if(province=="广东省"){

			    //定义一个城市数组
				var arr = ["广州市","东莞市","佛山市","深圳市"] ;

				//遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="渭南市">渭南市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML += "<option value="+arr[i]+">"+arr[i]+"</option> "
                }
				
		}
    }
</script>

优化:上述代码实现的结果是选择一个省份,获取的城市会叠加,因为是一个数组

所以需要将city的innerHTML清空掉,

这个清空放在判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"之前

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>
    //定义函数:选项卡发生变化的事件
    function testChange(){
        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;
        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;

        //将city的innerHTML清空掉
		city.innerHTML = "" ;

        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){

				//定义一个城市数组
				var arr = ["西安市","渭南市","咸阳市","宝鸡市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="西安市">西安市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
                }
			}
			
			if(province=="山西省"){

				//定义一个城市数组
				var arr = ["太原市","晋中市","临汾市","大同市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="太原">太原市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
				}
                
			}
			
			if(province=="广东省"){

			    //定义一个城市数组
				var arr = ["广州市","东莞市","佛山市","深圳市"] ;

				//遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="渭南市">渭南市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML += "<option value="+arr[i]+">"+arr[i]+"</option> "
                }
				
		}
    }
</script>

实现省市联动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值