1、JavaScript介绍
- Javascript 语言诞生主要是完成页面的数据验证。
- JS 是弱类型,Java 是强类型。
特点
-
交互性(信息的动态交互)
-
安全性(不允许直接访问本地硬盘)
-
跨平台性(只要是可以解释 JS 的浏览器都可以执行,和平台无关)
2、JavaScript和html代码的结合
2.1、通过script 引入外部的 js 文件来执行
src 属性专门用来引入 js 文件路径(可以是相对路径,也可以是绝对路径)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="first.js"></script>
</head>
<body>
</body>
</html>
2.2、script 标签直接定义 js 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
alert("瓦大西哇")
</script>
</head>
<body>
</body>
</html>
3、JavaScript变量
JavaScript 的变量类型:
数值类型: number
字符串类型: string
对象类型: object
布尔类型: boolean
函数类型: function
JavaScript的特殊值
undefined 未定义
null 空值
NaN 非数字,非数值
JavaScript定义变量名格式
var 变量名;
var 变量名 = 值;
4、关系运算符
等于:== 比较字面值
全等于:=== 比较字面值和两个变量的数据类型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var a="1";
var b=1;
alert(a == b);
alert(a===b);
</script>
</head>
<body>
</body>
</html>
5、数组
JavaScript中数组的定义。
var 数组名 = [] ; //空数组
var 数组名 = [1,‘ABC’,false] ; //定义数组并赋值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var arr1=[];
// alert(arr1.length) //0
arr1[0]=10;
// alert(arr1.length) //1
//在js的数组中,只要通过下标赋值,那么最大的下标值,就会自动的给数组做扩容
//在这里我们跳过了arr[1],那么arr[1]的值就是未定义,也就是undefined
arr1[2]="德玛西亚";
// alert(arr1.length)
// alert(arr1[1]) //undefined
//数组的遍历
for (var i = 0; i <arr1.length ; i++) {
alert(arr1[i]) //10 undefined 德玛西亚
}
</script>
</head>
<body>
</body>
</html>
6、函数
6.1、函数的两种定义方式
6.1.1、使用function关键字
格式:
function 函数名 (参数列表){
函数体
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//定义一个无参函数
function fun1(){
alert("无参函数被调用了")
}
// fun1(); //函数要调用才会执行
function fun2(a,b){
alert("有参函数被调用 a->"+a+",b->"+b)
}
// fun2(12,"abc")
//定义带有返回值的函数
function fun3(sum1,sum2){
var result=sum1+sum2;
return result;
}
alert(fun3(1,2));
</script>
</head>
<body>
</body>
</html>
6.1.2、函数的第二种方式
格式
var 函数名 = function(形参列表){
函数体
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var fun1= function (){
alert("无参函数")
}
// fun1();
var fun2 = function (a,b){
alert("有参函数a="+a+",b="+b);
}
// fun2(10,20) //有参函数a=10,b=20
var fun3 = function (sum1,sum2){
return sum1+sum2;
}
alert(fun3(20,10));
</script>
</head>
<body>
</body>
</html>
注意:在java中,函数是允许被重载的,但是在js中函数的重载会覆盖掉上一次的定义,也就是说,同名函数不管是有参还是无参,都只会呈现最后一次定义的函数内容。
6.2、函数的arguments隐形参数
在function函数中不需要定义,但是却可以直接获取全部参数的变量,就叫隐形参数
js的隐形参数就想java的可变长参数一样。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function fun(a, b, c) {
alert(arguments.length);
//可查看参数个数
alert(arguments[0]);
alert(arguments[1]);
alert(arguments[2]);
alert("a = " + a);
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
}
fun(1,"ad",true);
</script>
</head>
<body>
</body>
</html>
7、js中的事件
什么是事件?事件就是输入设备与页面进行交互的响应,称为事件
常见的事件有:
onload 加载完成事件 页面加载完成之后,常用于做页面 js 代码初始化
onclick 单击事件 用于按钮的点击响应
onblur 失去焦点事件 用于输入框失去焦点后验证其输入内容是否合法。
onchange 内容发生改变事件 用于下拉列表和输入框内
onsubmit 表单提交事件 用于表单提交
7.1、onload加载事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//onload事件
function onload_func(){
alert('静态注册onload事件')
}
window.onload = function (){
alert("动态注册onload事件")
}
// onload_func()
</script>
</head>
<!--onload 事件是浏览器解析完页面之后就会自动触发-->
<body>
</body>
</html>
静态注册:通过 html 标签的事件属性直接赋于事件响应
动态注册:先通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象赋予事件响应
7.2、onclick 单击事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//静态注册
function onclick_func(){
alert("静态注册onclick");
}
//动态注册
window.onload = function (){
var object = document.getElementById("btn");
object.onclick=function (){
alert("动态注册onclick")
}
}
</script>
</head>
<body>
<button onclick="onclick_func();">静态注册按钮</button>
<button id="btn">动态注册按钮</button>
</body>
</html>
7.3、onblur失去焦点事件(每次点击都会加一次)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//静态注册失去焦点
function onblur_func(){
//console控制台对象
//log
console.log("静态注册失去焦点");
}
//动态注册失去焦点
window.onload = function (){
//获取标签对象
var obj = document.getElementById("password");
//标签对象.事件名称 = function(){};
obj.onblur=function (){
console.log("动态注册失去焦点")
}
}
</script>
</head>
<body>
我爱你<input type="text" onblur="onblur_func();"><br/>
我恨你<input id="password" type="text"><br/>
<!--<button οnclick="onblur_func();">静态注册按钮</button>-->
<!--<button id="btn">动态注册按钮</button>-->
</body>
</html>
7.4、onchange事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onchange_func(){
alert("选择的球类发生改变")
}
window.onload = function (){
//1、获取标签对象
var obj = document.getElementById("btn")
obj.onchange = function (){
alert("选择的乐器发生改变")
}
}
</script>
</head>
<body>
<!--静态注册onchange事件-->
<select onchange="onchange_func()">
<option>球类</option>
<option>篮球</option>
<option>排球</option>
<option>足球</option>
</select>
<select id="btn">
<option>乐器</option>
<option>吉他</option>
<option>口琴</option>
<option>架子鼓</option>
</select>
</body>
</html>
7.5、onsubmit 表单提交事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onsubmit_func(){
alert("静态注册表单提交")
return false;
}
<!--return false可以阻止表单提交-->
window.onload = function (){
//1、获取标签对象
var obj = document.getElementById("btn")
obj.onsubmit = function (){
alert("动态注册表单提交");
return false;
}
}
</script>
</head>
<body>
<!--return false可以阻止表单提交-->
<form action="http://localhost:8088" method="get" onsubmit="return onsubmit_func()">
<input type="submit" value="静态注册">
</form>
<form action="http://localhost:8088" id="btn">
<input type="submit" value="动态注册">
</form>
</body>
</html>
8、document对象
通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。
- JavaScript 能够改变页面中的所有 HTML 元素
- JavaScript 能够改变页面中的所有 HTML 属性
- JavaScript 能够改变页面中的所有 CSS 样式
- JavaScript 能够对页面中的所有事件做出反应
Document 对象的理解:
一:Document 它管理了所有的 HTML 文档内容。
二:document 它是一种树结构的文档。有层级关系
三:它让我们把所有的标签 都 对象化
四:我们可以通过 document 访问所有的标签对象。
什么是对象化?
比如在java中,一个简单的person类
class Person{
private int age;
private String name;
private String sex;
}
那在html中的对象化就是
<body>
<div id="password">密码</div>
</body>
8.1、Document 对象中的方法介绍
document.getElementById(elementId) 通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值
document.getElementsByName(elementName) 通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值
document.getElementsByTagName(tagname) 通过标签名查找标签 dom 对象。tagname 是标签名
document.createElement( tagName) 方法,通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名
比如:
document : 文档
get: 获得
element: 元素
by: 通过
id: id
理解为:通过id获取文档中的元素
8.1.2、getElementById方法
getElementById是指定id来查找对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclick_func(){
//获取身份证元素
var idcardobj=document.getElementById("idcard");
//获取文本框的值
var idcardText = idcardobj.value;
//正则匹配
var patt=/^\d{15}(\d{2}[A-Za-z0-9])?$/;
if(patt.test(idcardText)){
alert("身份证合法")
}else{
alert("身份证不合法")
}
}
</script>
</head>
<body>
身份证:<input type="text" id="idcard" value="sfz"/>
</span>
<button onclick="onclick_func()">校验</button>
</body>
</html>
8.1.3、getElementsByName方法
getElementsByName是指定name属性来查找对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//全选
function checkall(){
//让所有的复选框都选中
var hobbyies = document.getElementsByName("hobby");
for (var i = 0; i <hobbyies.length ; i++) {
hobbyies[i].checked = true;
}
}
//全不选
function nocheck(){
//让所有的复选框都不选中
var hobbies = document.getElementsByName("hobby");
for (var i = 0; i <hobbies.length ; i++) {
hobbies[i].checked = false;
}
}
//反选
function checkReverse(){
var hobbies = document.getElementsByName("hobby");
for (var i = 0; i <hobbies.length ; i++) {
hobbies[i].checked = !hobbies[i].checked;
}
}
</script>
</head>
<body>
爱好:
<input type="checkbox" name="hobby" value="篮球" checked="checked">篮球
<input type="checkbox" name="hobby" value="足球">足球
<input type="checkbox" name="hobby" value="排球">排球
<br/>
<button onclick="checkall()">全选</button>
<button onclick="nocheck()">全不选</button>
<button onclick="checkReverse()">反选</button>
</body>
</html>
8.1.4、getElementsByTagName
document.getElementsByTagName 是按照指定标签名来查找对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//全选
function checkall(){
//让所有的复选框都选中
//document.getElementsByTagName 是按照指定标签名来查找对象
var inputs = document.getElementsByTagName("input");
for (var i = 0; i <inputs.length ; i++) {
inputs[i].checked = true;
}
}
</script>
</head>
<body>
爱好:
<input type="checkbox" name="hobby" value="篮球" checked="checked">篮球
<input type="checkbox" name="hobby" value="足球">足球
<input type="checkbox" name="hobby" value="排球">排球
<br/>
<button onclick="checkall()">全选</button>
</body>
</html>
8.1.5、节点的常用属性和方法
getElementsByTagName() 获取当前节点的指定标签名的子节点
appendChild( ChildNode ) 添加一个子节点
childNodes 属性,获取当前节点的所有子节点
firstChild 属性,获取当前节点的第一个子节点
lastChild 属性,获取当前节点的最后一个子节点
parentNode 属性,获取当前节点的父节点
nextSibling 属性,获取当前节点的下一个节点
previousSibling 属性,获取当前节点的上一个节点
className 用于获取或设置标签的 class 属性值
innerHTML 属性,表示获取/设置起始标签和结束标签中的内容
innerText 属性,表示获取/设置起始标签和结束标签中的文本