Web--JavaScript(二)

一、函数

(一)函数的定义方式

使用function关键词定义

函数的调用(也可以把调用函数放在函数前面,正常执行)

(二)函数的返回值

在函数的内部使用return关键字来返回指定内容(如果想要返回多个值,将多个值存入数组中再返回)

注意:如果函数没有设置返回值,默认返回undefined

(三)函数的三种形式

命名函数:function 函数名(){}

这种定义函数的方式,任何位置都可以调用

匿名函数:一般在表达式中定义,或者用于事件当中,或者是用做回调函数。只能在韩式定义之后调用

自运行函数

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>函数</title>
</head>
<body>
	<script>
		func();
		//一段特定功能的代码段,就是函数
		//函数的定义方式:使用关键字function
		function func(){
			console.log('我是一个函数');
		}
		//调用函数
		//func()
		//求和函数
		function sum(){
			var res = 1 + 1;
			console.log(res);
			return res;
		}
		var total = sum();
		console.log(total);

		//匿名函数
		//func1();匿名函数只能在函数定义之后调用
		var func1 = function(){
			console.log('我是匿名函数');
		}
		console.log(func1);//输出整个函数
		func1();//输出函数内容

		//自运行函数
		(function(){
			console.log('我是自运行函数');
		})()
	</script>
</body>
</html>

(四)函数的参数

1、定义了形参,传多个实参,多余的实参会自动忽略

2、定义了形参,不传实参,不会报错,形参的值undefined

在函数内部可以使用arguments,获取到所有的实参,是一个类数组对象

作用域:

全局变量:在函数外部定义的变量和在函数内部不适用var定义的变量是全局变量,在任意位置都可以使用

局部变量:在函数内部使用var定义的变量是局部变量,只能在当前函数内部使用

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>参数</title>
</head>
<body>
	<script>
		function func(msg1,msg2){
			console.log(msg1, msg2);
			//获取所有的实参
			console.log(arguments);
			for(i in arguments){
				console.log(arguments[i]);
				console.log(arguments instanceof Array);
			}
		}
		//定义函数时有形参,调用函数时不传参数
		//func();
		//传多个实参,按照位置传参,多余的实参会自动忽略
		func('a','b','c');

		function func2(){
			console.log('没有形参的函数');
		}
		func2(1, 2, 3);

		
		var a = '外部的a';
		function fun3(){
			a += '我是拼接的内容';
			var b = '我是内部的b';
			c = '我是函数内部定义的全局变量';
			console.log(a, b, c);
		}
		console.log(a);//外部的a
		// console.log(c);//函数内部定义的全局变量只能在函数调用后使用,此处会报错
		fun3();
		// console.log(b);//函数外部是不能访问函数内部的局部变量,此处会报错
		console.log(c);
	</script>
</body>
</html>

(五)对象的操作

对象的定义方式:

(1)使用系统提供Object()实例化对象var对象名=new Object();//创建一个空对象

(2)直接定义:var 对象名 = {key:val,key:function}

(3)使用构造函数创建对象

 

操作对象:

        添加属性:如果属性已经存在就修改,不存在就添加。对象名.属性名=''

        修改属性

        删除属性:delete 对象名.属性名

        查看属性的值:对象名.属性名

        调用对象的方法:对象名.方法名()

[]问题:

        for in 在遍历对象时,打印属性时需要[]

        当属性名被存到变量中的时候,我们需要使用[]

        当属性名是字符串的时候,也需要使用[]

this  哪个对象调用了this,this就指向哪个对象

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		//1.使用系统提供Object()实例化对象
		var obj1 = new Object();

		//对象的操作
		//添加成员属性和成员方法
		obj1.name = '欢欢';
		obj1.say = function(){
			console.log('我太难了~');
		}
		//修改name属性的值
		obj1.name = '刘欢';
		//删除
		// delete obj1.name;
		console.log(obj1.say());

		//2.直接定义
		var obj2 = {
			name:'萌萌',
			say:function(){
				console.log('我太萌了~');
			}
		}
		console.log(obj2);

		//3.使用构造函数实例化对象
		function Student(name){
			this.name = name;
			this.say = function(){
				console.log('我是一头狼');
			}
		}
		//实例化
		var haha = new Student('二哈');
		console.log(haha);

		//js中最大的对象window
		//this这个,那个对象调用了this,this就指向这个对象,在全局中this指向的是window对象
		

		//什么时候用[]
		//当键赋值给变量时,使用[变量名]
		//当键为字符串时,使用[该字符串]
		var obj3 = {name:'贵宾', age:3};
		var key = 'gender';
		obj3[key] = '男';
		console.log(obj3);
		console.log(obj3[key]);

		//添加一个成员属性'length'
		obj3['length'] = '180cm';
		console.log(obj3['length'])

		for(i in obj3){
			console.log(obj3[i]);
		}
	</script>
</body>
</html>

(六)元素操作

js主要的目的是用来操作HTML

如何操作html,css中如果要设置元素的样式,需要通过选择器获取元素。

在js当中如果你要操作元素必须先获取元素对象

如何获取元素:

        1、通过id获取元素对象

        2、通过标签名获取元素对象

        3、通过类名获取元素对象

样式的操作:

        设置元素样式,通过js设置的都是行间样式

        格式:元素对象.style.css属性=‘值’

        注意双拼词,如background-color,要将-去掉,第二个单词首字母大写

元素属性的操作:

        getAttribute()

        setAttribute()

        removeAttribute()

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<div id="box" class="item1"></div>
	<div class="item1"></div>
	<script>
		//1.通过id获取元素对象,返回元素对象:get获取、Element元素、ById
		var oDiv = document.getElementById('box');
		console.log(oDiv, typeof(oDiv));
		//2.通过标签名获取元素对象,返回类数组对象
		var oDivs = document.getElementsByTagName('div');
		console.log(oDivs, typeof(oDivs));
		for(i in oDivs){
			console.log(oDivs[i]);
		}
		//3.通过类名获取元素,返回类数组对象
		var oDivcs = document.getElementsByClassName('item1');
		console.log(oDivcs, typeof(oDivcs));

	//设置元素的样式,通过js设置的都是行间样式
	// 格式:元素对象.style.css属性 = '值';
	// 注意双拼词,如background-color,需要将-去掉,第二个单词首字母大写
	// oDiv.style.width = '200px';
	// oDiv.style.height = '200px';
	// oDiv.style.backgroundColor = 'red';
	// 
	// 通过标签或者类名获取的对象不能直接使用,必须遍历单独设置
	for(var i = 0; i < oDivs.length; i++){
		console.log(oDivs[i]);
		oDivs[i].style.width = "200px";
		oDivs[i].style.height = "200px";
		oDivs[i].style.backgroundColor = "green";
	}
	</script>
</body>
</html>

表单值的操作:value属性

文本值的操作:innerHTML、innerText

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#Div{
			width: 200px;
			height: 200px;
			background: gold;
		}
	</style>
</head>
<body>
	<img src="./img/1.jpg" id="img">
	<div id="Div">
		<h1>就这样被你征服</h1>
	</div>
	<input type="text" value="123" id="inp">
	<script>
		var Img = document.getElementById('img');
		console.log(Img);
		//获取src属性
		console.log(Img.getAttribute('src'));
		//src本身就是img的默认属性,所以可以直接操作
		console.log(Img.src);
		//设置属性
		Img.setAttribute('data', '嘿嘿');
		//Img.setAttribute('src','./img/2.jpg');
		Img.src='./img/2.jpg';
		//删除属性
		Img.removeAttribute('data');


		//表单值的操作 value
		var Inp = document.getElementById('inp');
		console.log(Inp.value);
		Inp.value = '456';

		//文本值的操作
		var oDiv = document.getElementById('Div');
		//获取文本
		//innerHTML 会连标签一起获取
		//innerText 获取纯文本
		console.log(oDiv.innerHTML);
		console.log(oDiv.innerText);

		//设置文本内容
		//innerHTML 会解析标签
		//innerText  不会解析标签
		oDiv.innerHTML = '<h1>切断了所有退路</h1>';
		oDiv.innerText = '<h1>我的心情一落幕</h1>';
	</script>
</body>
</html>

常用的事件:

        事件驱动语言

        鼠标事件:

                鼠标单击事件:onclick

                鼠标移入:onmouseover

                鼠标移出:onmouseout

                鼠标移动:onmousemove

                鼠标按下:onmousedown

                鼠标抬起:onmouseup

        键盘事件:

                键盘按下:onkeydown

                抬起:onkeyup

        表单事件:

                获取焦点:onkeydown

                失去焦点:onblur

                当value值发生改变时触发的事件onchange

                提交事件:onsubmit

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#box{
			width: 200px;
			height: 200px;
			border: 1px solid red;
		}
	</style>
</head>
<body>
	<div id="box"></div>
	<form action="" id="form">
		用户名:<input type="text" name="username">
		<select name="sel">
			<option value="0">东莞</option>
			<option value="1">北京</option>
			<option value="2">上海</option>
		</select>
		<button>完事</button>
	</form>
	<script>
		var oDiv = document.getElementById('box');
		//绑定鼠标单击
		var flag = 1;
		oDiv.onclick = function(){
			if(flag == 1){
				//改变背景颜色
				oDiv.style.backgroundColor = 'red';
				flag = 0;
			}else{
				//改变背景颜色
				oDiv.style.backgroundColor='#fff';
				flag = 1;
			}
		}

		//移入事件
		oDiv.onmouseover = function(){
			console.log('鼠标进入');
		}
		//移除事件
		oDiv.onmouseout = function(){
			console.log('鼠标出来');
		}
		// 移动事件
		oDiv.onmouseover = function(){
			console.log('移动');
		}
		//键盘事件
		window.onkeydown = function(){
			console.log('我按下了键盘');
		}
		//键盘抬起事件
		window.onkeyup = function(){
			console.log('抬起来');
		}
		//表单事件
		var Form = document.getElementById('form');
		//获取焦点
		Form.username.onfocus = function(){
			console.log('哈哈哈');
		}
		//失去焦点
		Form.username.onblur = function(){
			console.log('嘿嘿嘿');
		}

		//onchange当value值发生变化时触发
		//对于普通的输入框只有失去焦点时才会触发change事件
		//一般配合下拉选框去使用
		Form.sel.onchange = function(){
			//console.log('pick me');
			//获取当前选中的value值
			//谁触发的事件this就代表那个元素对象
			console.log(this.value);
		}

		//提交事件一般绑定给form元素,当单击提交按钮时触发
		Form.onsubmit = function(){
			alert('别走');
		}

		
	</script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值