1、Javascript
1.1 js与html结合
(1)第一种方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 在head或者body标签中使用一个script标签-->
<script type="text/javascript">
alert('Hello!');
</script>
</head>
<body>
<script type="text/javascript">
alert('hello!');
</script>
</body>
</html>
(2)第二种方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 将js代码写到一个js文件中通过script标签引用,不能同时用两种方法。-->
<script type="text/javascript" src="../js/js01.js">
</script>
</head>
<body>
</body>
</html>
1.2 js的变量类型
数值类型:number;
字符类型:string;
对象类型:object;
布尔类型:bool;
函数类型:function;
1.3 js里的特殊的值
undefined:所有js变量没有赋初值时,默认值都是undefined;
null:空值;
NAN:not a number,非数值和非数字。
1.4 js里定义变量的格式
var 变量名;
var 变量名 = 值。
1.5 js提供的一些函数
typeof(变量)可以取变量的数据类型返回;
1.6 js里的关系运算
==是简单的做字面值的比较;
===是除了做字面值的比较还要比较数据类型。
1.7 js里的逻辑运算
(1)且运算:&&当表达式的值全为真的时候,返回最后一个表达式的值。当表达式中有一个为假的时候,返回第一个为假的表达式的值;
(2)或运算:||当表达式的值全为假的时候,返回最后一个表达式的值。当表达式中有一个为真的时候,返回第一个为真的表达式的值;
(3)且运算和或运算都有短路,即且运算中如果左边的表达式的值为false就不会继续计算后面的表达式的值,直接返回false;而或运算中如果左边表达式的值为true就回直接返回true。
(4)取反运算:!;
(5)JavaScript中所有的变量都可以作为一个boolean类型的变量去使用,其中0,null,undefined,""(空串),都认为是false,其他的都为true。
1.8 js里的数组
(1)定义:
var 数组名 = [](空数组);
var 数组名 = [元素];
(2)js里的数组只要赋了值,就能自动扩容,前面没有扩容的元素的值为undefined;
1.9 js里的函数
(1)定义:
第一种:使用function关键字定义函数:
function函数名(形参列表){函数体};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function fun1() {
alert('hello!');
}
function fun2(a, b) {
return a+b;
}
fun1();
alert(fun2(1, 2));
</script>
</head>
<body>
</body>
</html>
第二种:
var 函数名 = function(形参列表){函数体};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var fun1 = function() {
alert('hello!');
}
var fun2 = function(a, b) {
return a+b;
}
fun1();
alert(fun2(1, 2));
</script>
</head>
<body>
</body>
</html>
(2)js中函数不允许重载,如果重载会直接覆盖掉上一次的定义。
(3)隐形参数argument,即在function函数中不需要定义就可以直接获取所有参数的变量。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function fun() {
alert(arguments)
alert(arguments[0]);
alert(arguments[1]);
alert(arguments[2]);
alert(arguments[3]);
}
fun(1,2,3);
</script>
</head>
<body>
</body>
</html>
1.10 js里的字定义对象
(1)定义:
第一种形式:
var 变量名 = new Object();
变量名.属性名 = 值;
变量名.函数名 = function(){};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var user = new Object();
user.name = "Xuan";
user.age = 19;
user.getAge = function () {
alert(this.age);
}
alert(user.name);
user.getAge();
</script>
</head>
<body>
</body>
</html>
第二种形式:
var 变量名 = {
属性名:值;
函数名:function(){};
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var user = {
name:"Xuan",
age:19,
getAge:function () {
alert(this.age);
}
}
alert(user.name);
user.getAge();
</script>
</head>
<body>
</body>
</html>
(2)访问:
变量名.属性;
变量名.函数名();
1.11 js里的事件
事件的注册(绑定):
(1)静态注册:通过html标签的事件属性直接赋于事件响应后的代码;
(2)动态注册:先通过js代码得到标签的dom对象,然后再通过dom对象.事件名 = function(){}这种形式赋于事件响应后的代码。
1.11.1 onload事件
页面加载完之后自动触发的一些操作。
静态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onloadFun() {
alert('静态注册onload!');
}
</script>
</head>
<body onload="onloadFun();">
</body>
</html>
动态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload = function () {
alert('动态注册onload!');
}
</script>
</head>
<body>
</body>
</html>
1.11.2 onclick事件
常用于按钮的点击响应。
静态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclickFun() {
alert('静态注册onclick!');
}
</script>
</head>
<body>
<button onclick="onclickFun()">click me!</button>
</body>
</html>
动态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload = function () {
var bt01 = document.getElementById("bt01");
bt01.onclick = function () {
alert('动态注册onclick!');
}
}
</script>
</head>
<body>
<button id="bt01">click me!</button>
</body>
</html>
1.11.3 onblur事件
常用于输入框失去焦点后验证其输入内容是否合法。
静态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onblurFun() {
input01.value = input01.value.toUpperCase();
}
</script>
</head>
<body>
<input type="text" onblur="onblurFun()">
</body>
</html>
动态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload = function () {
var input01 = document.getElementById("input01");
input01.onblur = function () {
input01.value = input01.value.toUpperCase();
}
}
</script>
</head>
<body>
<input type="text" id="input01" value="onblur">
</body>
</html>
1.11.4 onchange事件
常用于下拉列表和输入框内容发生改变后操作。
静态绑定:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onchangeFun() {
alert('your hero is changed!');
}
</script>
</head>
<body>
select your hero!
<select onchange="onchangeFun()">
<option>亚索</option>
<option>刀妹</option>
<option>剑姬</option>
<option>锐雯</option>
</select>
</body>
</html>
动态绑定:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload = function () {
var hero = document.getElementById("hero");
hero.onchange = function () {
alert('your hero is changed!');
}
}
</script>
</head>
<body>
select your hero!
<select id="hero">
<option>亚索</option>
<option>刀妹</option>
<option>剑姬</option>
<option>锐雯</option>
</select>
</body>
</html>
1.11.5 onsubmit事件
常用于验证表单项是否合法,return false可以阻止表单提交。
静态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onsubmitFun() {
alert('静态注册onsubmit不合法!');
return false;
}
</script>
</head>
<body>
<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun()">
<input type="submit" value="静态注册">
</form>
</body>
</html>
动态注册:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload = function () {
var sub = document.getElementById("sub01");
sub.onsubmit = function () {
alert('动态注册onsubmit不合法!');
return false;
}
}
</script>
</head>
<body>
<form action="http://localhost:8080" method="get" id="sub01">
<input type="submit" value="静态注册">
</form>
</body>
</html>
1.12 js里的document对象
(1)把文档中的标签、属性、文本转换为对象来管理,管理了所有的html文档内容;
(2)是一种树结构的文档,有层级关系;
(3)把所有的标签都对象化;
(4)可以通过document访问所有的标签对象。
1.12.1 getElementById(elemenId)
返回拥有指定id的第一个对象的引用。
1.12.2 getElementByName(elementName)
返回带有指定名称的对象的集合。
1.12.3 getElementByTagName(tagName)
返回带有指定标签名的对象的集合。
1.12.4 createElement(tagName)
创建一个标签对象。
1.13 案例:验证用户名是否有效
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclickFun() {
var passwordObj = document.getElementById("password");
var passwordText = passwordObj.value;
var psdSpanObj = document.getElementById("psdSpan");
var patt = /^\w{5,12}$/
//test()方法用于测试某个字符串是否匹配规则
if (patt.test(passwordText))
//innerHTML表示起始标签和结束标签之间的内容,可读可写。
psdSpanObj.innerHTML = "用户名合法!";
else
psdSpanObj.innerHTML = "用户名不合法!";
}
</script>
</head>
<body>
密码:<input type="text" id="password" value="12345">
<span id="psdSpan" style="color: red"></span>
<button onclick="onclickFun()">submit</button>
</body>
</html>
1.14 正则表达式
1.15 节点的常用属性和方法
1.15.1 方法:
(1)getElementByTagName()获取当前节点的指定标签名孩子节点。
(2)appendChild(oChildNode)添加一个子节点。
1.15.2 属性:
(1)childNodes获取当前节点的左右子节点;
(2)firstChild获取当前节点的第一个子节点;
(3)lastChild获取当前节点的最后一个子节点;
(4)parentNode获取当前节点的父节点;
(5)nextSibling获取当前节点的下一节点;
(6)previousSibling获取当前节点的上一节点;
(7)className用于获取或设置标签的class属性值;
(8)InnerHtml获取/设置起始标签到结束标签中的内容;
(9)InnerText获取/设置起始标签到结束标签中的文本;