JavaScript

一,JavaScript概述

1.历史:

JavaScript最早是由美国网景公司开发的
    用于在网页中,为网页添加动态功能的
    原名叫做livescript,
    后来sun公司与网景公司合作,改名为JavaScript
    Java是一种运行在服务器端的,是后端程序,Java要编译才能执行
    JavaScript运行在网页,是前端语言,不需要编译,直接右浏览器解释运行

2.JavaScript概述

脚本语言:不需要编译(sql,html,css,js,python),直接由模拟中解释器(引擎)来解释执行
    
    JavaScript是一种直译式的脚本语言,为网页添加各种动态功能,可以直接对网页中的标签属性值,css属性值进行修改
    
    html是网页骨架
    css是皮肤
    JavaScript是动作,可以动态的改变页面的功能
    


    特点:
        虽然是面向对象的语言,但是初级使用仍然是面向过程的用法,会提供对象
        
        JavaScript是一种弱类型语言,(c,java都是强类型语言)
            a = "abc";(定义时,前面不需要加定义的类型名称,可以直接定义)
            b;

二,基本语法:

1.脚本位置

JavaScript脚本写在一组<script>标签中,此标签可以放在head中或body中,一般习惯放在head中,还可以将脚本写在外部的.js文件中,在html页面中导入外部的.js文件

2.变量

 (1)使用let或var关键字来声明变量

eg:
let name
var name

(2)声明变量的同时可以对其赋值

eg:
let name = "zhangsan"
var name = "lisi"

注:在声明变量的时候如果没有进行赋值,则该变量为undefined,是一个特殊的原始数据状态,表示一个变量已声明但未被赋值的状态

3.数据类型

JavaScript中支持的数据类型由

(1)数值型(number)

        其中包括整数型和浮点数型

(2)布尔型(boolean)

        即逻辑值,true或false

(3)字符串类型

        由单个或多个文本字符组成。字符串是用单引号或双引号来说明的。(使用单引号来输入包含引号的字符串)

(4)undefined类型

(5)object类型

4.运算符

+可以进行“加法”与“连接”运算,如果2个运算符中的一个是字符串,javascript就将另一个转换成字符串,然后将2个运算数连接起来。

给定 y = 5,下面的表格解释了算数运算符:

给定 x = 10和 y = 5,下面的表格解释了赋值运算符:

给定 x = 5,下面的表格解释了比较运算符

给定 x = 6以及 y = 3,下表解释了逻辑运算符

条件运算符(三目运算):

语法:var result = (条件表达式)?结果一:结果2

当条件成立时返回?后结果,否则返回:后结果

5.控制语句

第一种是选择结构

(1)单一选择结构(if)

(2)二路选择结构(if/else)

(3)多路选择结构(switch)

第二种类型的程序控制语句是循环结构

(1)由计数器控制的循环(for)

(2)在循环的开头测试表达式(while)

(3)在循环的末尾测试的表达式(do/while)

(4)break,continue

三,函数

1.定义函数

函数定义的基本语法:

function functionName([arguments]){
    javascript statements
    [return expression]
}

function:表示函数定义的关键字;

functionName:表示函数名;

arguments:表示传递给函数的参数列表,各个参数之间用逗号隔开,可以为空;

statements:表示实现函数功能的函数体;

return expression:表示函数将返回expression的值,同样是可选的语句

eg:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			/* 
			 函数声明:
			 function functionName([arguments]){
				javascript statements
				[return expression]
			 }
			 */
			/* 无参函数 */
			// function test(){
			// 	console.log("test()");
			// }
			
			/* 
			 有参数的函数
			 */
			// function test(a,b,c){
			// 	console.log(a,b,c);
			// }
			// test(1,21,3);
			
			function add(a,b){
				return a+b
			}
			let res = add("555",25)
			console.log(res)
			
		</script>
	</head>
	<body>
		<input type="button" value="按钮" onclick="test()"/>
	</body>
</html>

consle.log()在控制台输出log内的成员

2.函数的调用

由函数调用

<script type="text/javascript">
function fun(){
    alert(“test”);
}
fun();//函数名调用
    function fun2(){
    fun();//在其他函数中调用
}
</script>

3.全局函数

parselnt(arg)把括号内的内容转换成整数之后的值,如果括号内是字符串,则字符串开头的数字部分被转换成整数,如果以字母开头,则返回"NaN"

parseFloat(arg)把括号内的字符串转换成浮点数之后的值,字符串开头的数字部分转换成浮点数,如果以字母开头,则返回"NaN"

typeof(arg)返回arg值的数据类型

eval(arg)可运算某个字符串

4.内置对象-String字符串

属性:

        length 用法:返回该字符串的长度

方法:

        charAt(n):返回该字符串位于第n个字符

        indexOf(char):返回指定char首次出现的位置.

        lastIndexOf(char) :跟 indexOf() 相似,不过是从后边开始找.

        substring(start,end) :返回原字符串的子字符串,该字符串是原字符串从start位置到end位置的前一位置的一段.

        substr(start,length) :返回原字符串的子字符串,该字符串是原字符串从start位置开始,长度为length的一段.

        split(分隔符字符) :返回一个数组,该数组是从字符串对象中分离开来的,<分隔符字符>决定了分离的地方,它本身不会包含在所返回的数组中。

5.内置对象-Array数组

方法1:

let <数组名> = new Array();
使用此方法定义了一个空数组,通过下方方式向数组添加元素
<数组名>[下标] = 值;

示例:

      

  let arr = new Array();
        //    赋值方式1 新建一个空数组,对数组进行传值
            arr[0] = 1;
            arr[1] = true;
            arr[2] = "abc";
            console.log(arr);


方法2:

在定义数组的时候直接初始化数组:

let <数组名> = new Array(<元素1>,<元素2>,<元素3>....) 

示例:

//在新建数组时进行传值
let arr = new Array(1,2,3,true,"abc");
arr[5] = 6;//数组传值
arr[6] = 7; 

方式3: 

let <数组名> = [<元素1>,<元素2>,<元素3>...];

let arr = new Array();
arr = [1,2,3,true,"abc"];
let str1 = arr.join(",")//将字符串转化为数组
console.log(str1);

示例:

其中arr.join(",")是数组中的方法将数组转化为字符串,将元素通过(,)符号进行分割

属性: 
length : 数组的长度,即数组里有多个元素.

方法:
join(<分隔符>): 返回一个字符串,该字符串把数组中的各个元素串起来,使用<分割符>置于元素与元素之间.
reverse() :使数组中的元素顺序反过来.如果对数组[1,2,3]使用这个方法,它将使数组变成:[3,2,1]
sort() :使数组中的元素按照一定的顺序排列.如果不指定<方法函数>,则按字母顺序序排列
                 在对数字排序需要调用排序函数
                    function sortNumber(a,b){
                         return a-b;
                      }

示例:

// 对数组中的数字进行排序
let arr =[12,2,1,14];
arr.sort(numberSort);
                
//我们写一个方法传入sort方法进行排序,sort方法会通过我们写的方法对数字进行排序
function numberSort(a,b){
    return a-b;
}

注意:   不能对数字直接进行排序,直接排序数组,sort方法只会对数字的首个数字进行排序,需要我们传入一个方法对数字进行排序

6.内置对象-Date

获取日期:

new Date() 返回当日的日期和时间
getFullYear() 返回四位数字年份
getDate() 返回一个月中的某一天(1-31)
getMonth() 返回月份(0-11)
getDay() 返回一周中的某一天 (0-6)
getHours() 返回Date对象的小时(0-23)
getMinutes() 返回Date对象的分钟(0-59)
getSecond() 返回Date对象的秒数(0-59)

7.内置对象-Math

Math 对象,提供对数据的数学计算。
属性
        PI 返回π(3.1415926535...)。
方法
        Math.abs(x) 绝对值计算;
        Math.pow(x,y) 数的幂;x的y次幂
        Math.sqrt(x) 计算平方根;
        Math.ceil(x) 对一个数进行上舍入
        Math.floor(x) 对一个数进行下舍入
        Math.round(x) 把一个数四舍五入为最接近的整数
        Math.random() 返回 0 ~ 1 之间的随机数
        Math.max(x,y) 返回 x 和 y 中的最大值
        Math.min(x,y) 返回 x 和 y 中的最小值

以下代码为对所有的内置对象的示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			/* 
			 字符串对象
			 */
			/* let str = "ab:cde:fg"
			console.log(str.length)
			console.log(str.indexOf("c"))
			console.log(str.charAt(3))
			console.log(str.substring(1,3))//substring(开始位置,结束位置)
			console.log(str.substr(1,3))//substr(开始位置,截取长度)
			
			let arr = str.split(":");
			console.log(arr) */
			
			/* 
			 数组对象
			 */
			/* let arr = new Array();
			arr[0] = 1;
			arr[1] = true;
			arr[2] = "abc" */
			
			/* let arr = new Array(1,2,3,true,"abc")
				arr[5] = 6;
				arr[6] = 7; */
			// let arr = [1,2,3,true,"abc"]
			// console.log(arr)
			// console.log(arr.join("").length )将数组转换为字符串
			// arr.reverse()数组逆置
			// console.log(arr)
			
			
			// let arr = ["e","a","d","f","x","c","b"]
			// let arr = [19,5,8,3,7,1,4,5]
			// arr.sort(numberSort)//将自定义排序的函数传入到sort()中		
			// function numberSort(a,b){
			// 	return a-b;
			// }
			// console.log(arr)  小于0  大于0  等于0
			
			//日期对象
			let date = new Date();
			console.log(date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+"    "
					+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds())
			console.log(date.toLocaleString())
		</script>
	</head>
	<body>
	</body>
</html>

四.事件

事件是属于标签中的内容,不同的标签拥有不同的事件,通过事件可以触发js中的函数来完成某个具体的函数,多个标签在触发事件后调用同一个函数

onclick: 鼠标左键点击事件
ondblclick: 鼠标左键双击事件

onblur: 失焦事件  当输入框失去鼠标焦点时触发 针对输入框
onfocus: 聚焦事件  当鼠标获得鼠标焦点时触发
这两个事件常用于文本输入框

onmouseover: 鼠标悬浮事件  当鼠标移入到标签上时会触发
onmouseout: 鼠标离开事件  当鼠标从标签上离开时触发

onchange: 当失去鼠标焦点并且内容改变时触发
onload:  当网页内容加载完毕后自动触发  (常用于body标签添加该事件)

在body标签添加onload事件调用函数与直接调用函数的区别:

直接调用函数时,由于浏览器是从上往下加载html代码,不能在所有标签加载完毕后处理事件
而使用onload事件可以在所有标签加载完毕后处理该事件,不需要考虑函数的顺序

示例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            let i = 1;
            function text(){
                console.log("函数被执行了"+(i++)+"次")
            }
            // text(); 直接调用时,浏览器从上往下加载,不能在所有标签加载完毕后处理事此函数
        </script>
    </head>
    <body onload="text()">
        <div id="div1">1111</div>
         <input  type="button" value="按钮" onclick="text()"/>
         <div onclick="text()" style="background-color: aqua;">点击</div>
         <input type="button" value="双击按钮" ondblclick="text()" />
         
         <hr />
         <input type="text" onblur="text()"/><!--当问框失去焦点时触发该事件-->
         <input type="text" onfocus="text()"/><!-- 当文本框获得焦点时触发该事件 -->
         
          <div  onmouseover="text()" style="background-color: aqua;">鼠标移入事件</div>
          <hr />
           <div  onmouseout="text()" style="background-color: aqua;">鼠标移出事件</div>
           
           <input type="text" onchange="text()"/>
    </body>
</html>

五,Html DOM

1.概念

DOM是Document Object Model文档对象(网页中的标签)模型的缩写.

通过html dom,可用javaScript操作html文档的所有标签.

2.查找元素

DOM (document object model)  文档对象模型(指的就是网页中的标签)
             JavaScript在对网页进行操作时,认为网页中的每个标签都是一个独一无二的对象
             所以,我们需要JavaScript要对某一个标签进行操作,那么就需要现在JavaScript中多的此标签
             然后就可以对标签的属性,css样式,标签体中的内容进行操作
             要操作标签,先得到标签
             document对象,表示当前html文档,当网页内容加载完成后,自动生成

有四种方式来做到这种事

getElementByid("标签id")
getElementsByTagName("标签名")返回的是一个标签对象的集合,是一个集合对象,即使只有一个对象
getElementsByClassName("class属性名")
getElementsByName("name属性名")

3.改变HTML

Html dom允许JavaScript改变标签的属性

格式:
document.getElementById(“username").value=“new value";
document.getElementById("image").src=“new.jpg";
示例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
             function oper(){
                 //根据标签的id值获得标签对象
                 let tobj1 = document.getElementById("t1");
                 let tobj2 = document.getElementById("t2");
                 //2.对标签对象中的属性进行操作
                 tobj2.value = tobj1.value;//使id为t2的标签的value属性改为t1标签value属性
                 tobj1.value = "";//改变id为t1标签value属性值为空字符
             }
        </script>
    </head>
    <body>
         <input id="t1" type="text" value="123"/>
         <input id="t2" type="text" value=""/>
         <input type="button" value="操作" onclick="oper()"/>
    </body>
</html>

4.改变CSS

html dom允许 javaScript改变html标签的样式

语法格式:
document.getElementById("id").style.property=new style;

示例;

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			/* 
			 DOM (document object model)  文档对象模型(指的就是网页中的标签)
			 JavaScript在对网页进行操作时,认为网页中的每个标签都是一个独一无二的对象
			 所以,我们需要JavaScript要对某一个标签进行操作,那么就需要现在JavaScript中多的此标签
			 然后就可以对标签的属性,css样式,标签体中的内容进行操作
			 要操作标签,先得到标签
			 document对象,表示当前html文档,当网页内容加载完成后,自动生成
			 */
			//操作函数
			function oper(){
				//1根据标签的id值获得标签对象
				let tobj1 = document.getElementById("t1");
				let tobj2 = document.getElementById("t2");
				//2。对标签对象中的属性进行操作
					tobj2.value = tobj1.value;
					tobj1.type = "radio";
			}
			
			//改变body背景颜色
			function changeBgColor(color){
				let bodyobj = document.getElementById("bodyid")
					bodyobj.bgColor = color
			}
			/* 
			 一个按钮可切换三个颜色,第一次点击显示红色,点击背景颜色变成红色,之后按钮上的字变为蓝色
			 */
			let i= 0
			function oper1(){
				let bobj = document.getElementById("bid")
				let arr = ["红色","蓝色","绿色"]
				let arr1 = ['red','blue','green']
					bobj.value = arr[((i++)+1)%3]
					console.log(i)
				changeBgColor(arr1[(i-1)%3])
					console.log(i)
			}
		</script>
	</head>
	<body id = "bodyid" bgcolor="">
		<input id="t1" value=""/>
		<input id="t2" value=""/>
		<input type="button" value="操作" onclick="oper()"/>
		<hr />
		<input type="button" value="红色" onclick="changeBgColor('red')"/>
		<input type="button" value="蓝色" onclick="changeBgColor('blue')"/>
		<input type="button" value="绿色" onclick="changeBgColor('green')"/>
		<hr />
		<input type="button" id=bid value="红色" onclick="oper1()" />
	</body>
</html>

六,计时

通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。

方法:
setTimeout(“函数”,”时间”)未来的某时执行代码
clearTimeout()取消setTimeout()
setInterval(“函数”,”时间”)每隔指定时间重复调用
clearInterval()取消setInterval()

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function test(){
			console.log("函数执行了")
		}	
		
		// let n = setTimeout("test()",5000);//开启一个计时器,让定时器在延迟指定的事件后调用指定的函数,只执行一次
				setInterval("test()",2000)//开启一个计时器,每隔指定时间执行一次
		function closetime(){
			clearTimeout(n)//关闭指定计时器
			console.log(n)
		}
		</script>
	</head>
	<body>
		<input type="button" value="关闭计时器" onclick="closetime()"/>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值