JavaScript应用篇
文章目录
- JavaScript应用篇
- 一、JavaScript作用:
- 二、DOM对象:
- 三、DOM对象生命周期:
- 四、document对象:
- 五、document对象生命周期:
- 六、通过document对象定位DOM对象方式:
- 七、DOM对象对HTML标签属性操作
- 八、JavaScript监听事件
- 九、onload监听事件:
- 十、基于DOM对象实现监听事件与HTML标签之间绑定
一、JavaScript作用:
帮助浏览器对用户提出请求进行处理
二、DOM对象:
- 1.DOM = Document Object Model, 【文档模型对象】
- 2.JavaScript不能直接操作HTML标签,只能通过HTML标签
关联的DOM对象对HTML标签下达指令
三、DOM对象生命周期:
- 1.浏览器在接收到html文件之后,将HTML文件标签加载到浏览器缓存中,
每当加载一个html标签时候,自动为这个标签生成一个实例对象,
这个实例对象就是DOM对象 - 2.在浏览器关闭之前或则浏览器请求其他资源文件之前,本次生成的DOM对象
一直存活在浏览器缓存中 - 3.在浏览器关闭时候,浏览器缓存中dom对象将要被销毁
- 4.在浏览器请求到新资源文件后,浏览器缓存中原有的dom对象将会被覆盖
四、document对象:
- 1.document对象被称为【文档对象】
- 2.document对象用于在浏览器内存中根据定位条件定位DOM对象
五、document对象生命周期:
- 1.在浏览器将网页中所有标签加载完毕后,在内存中将使用【树形结构】
存储这些DOM对象。在树形结构生成完毕后由浏览器生成一个document对象
管理这颗树(DOM树)
在浏览器将接收网页中标签加载完毕后,自动在浏览器内存生成一个document对象 - 2.一个浏览器运行期间,只会生成一个document对象
- 3.在浏览器关闭时,负责将document对象进行销毁
六、通过document对象定位DOM对象方式:
- 1.根据html标签的id属性值定位DOM对象
命令格式 var domObj = document.getElementById(“id属性值”);
举个例子 var domObj = document.getElementById(“one”);
通知document对象定位id属性等于one的标签关联的DOM对象 - 2.根据html标签的name属性值定位DOM对象
命令格式 var domArray = document.getElementsByName(“name属性值”);
举个例子
<input type="checkbox" name="deptNo" value="10">部门10
<input type="checkbox" name="deptNo" value="20">部门20
<input type="checkbox" name="deptNo" value="30">部门30
var domArray = document.getElementsByName("deptNo");
通知document对象将所有name属性等于deptNo的标签关联的DOM对象
进行定位并封装到一个数组进行返回。 domArray就是一个数组存放
本次返回的所有DOM对象
- 3.根据html标签类型定位DOM对象
命令格式 var domArray = document.getElementsByTagName(“标签类型名”);
举个例子 var domArray = document.getElementsByTagName(“p”);
段落标签
通知document对象将所有段落标签关联的dom对象进行定位
并封装到一个数组返回
七、DOM对象对HTML标签属性操作
- 1.DOM对象对标签value属性进行取值与赋值操作
取值操作:
var domObj = document.getElementById("one");
var num = domObj.value;
赋值操作:
var domObj = document.getElementById("one");
domObj.value = "abc";
实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function fun1() {
var domArray = document.getElementsByTagName("p");
for (var i = 0; i < domArray.length; i++) {
var domObj = domArray[i];
window.alert("标签号:<p>" + domObj.innerText);
}
}
</script>
</head>
<body>
<p>第一个</p>
<p>第二个</p>
<p>第三个</p>
<br>
<input type="button" value="查看所有标签内容" onclick="fun1()" />
</body>
</html>
- 2.DOM对象对标签中【样式属性】进行取值与赋值操作
取值操作:
var domObj = document.getElementById("one");
//读取当前标签【背景颜色属性】值
var color = domObj.style.背景颜色属性
赋值操作:
var domObj = document.getElementById("one");
//通过DOM对象对标签中【背景颜色属性】进行赋值
domObj.style.背景颜色属性 = 值;
实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="text/javascript">
function fun(color) {
//地位id编号等于one的div
var domObj = document.getElementById("one");
//通过dom对象对当前标签【背景颜色进行修改】
domObj.style.background = color;
}
</script>
</head>
<body>
<center>
<div style="width: 300px; height: 300px; background: chartreuse;" id="one"></div>
<input type="radio" name="two" onclick="fun('red')" />红
<input type="radio" name="two" onclick="fun('yellow')" />黄
<input type="radio" name="two" onclick="fun('blue')" />蓝
</center>
</body>
</html>
- 3.DOM对象对标签中【状态属性】进行取值与赋值操作
状态属性: 状态属性的值都是boolean类型
disabled = true ; 表示当前标签不可以使用
disabled = false; 表示当前标签可以使用
checked: 只存在与radio标签与checkbox标签
checked = true ; 表示当前标签被选中了
checked = false; 表示当前标签未被选中
取值操作:
var domObj = document.getElementById("one");
var num = domObj.checked;
赋值操作:
var domObj = document.getElementById("one");
domObj.checked = true;
实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="text/javascript">
function fun() {
var flag = document.getElementById("two").checked;
var domArray = document.getElementsByName("one");
for (var i = 0; i < domArray.length; i++) {
domArray[i].checked = flag;
}
}
</script>
</head>
<body>
<center>
<table align="center" border="2">
<tr>
<td><input type="checkbox" id="two" onclick="fun()" />全选/全不选</td>
<td>职位</td>
<td>工资</td>
</tr>
<tr>
<td><input type="checkbox" name="one"></td>
<td>初级程序员</td>
<td>10000</td>
</tr>
<tr>
<td><input type="checkbox" name="one"></td>
<td>高级程序员</td>
<td>40000</td>
</tr>
<tr>
<td><input type="checkbox" name="one"></td>
<td>架构师</td>
<td>50000</td>
</tr>
</table>
</center>
</body>
</html>
- DOM对象对标签中【文字显示内容】进行赋值与取值
文字显示内容: 只存在于双目标签之间;<tr>100</tr>
取值操作:
var domObj = document.getElementById("one");
var num1 = domObj.innerText;
赋值操作:
var domObj = document.getElementById("one");
domObj.innerText = 值;
innerText与innerHTML 区别:
innerText与innerHTML都可以对标签文字显示内容属性进行赋值与取值
innerText只能接收字符串
innerHTML既可以接收字符串又可以接收html标签
实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="text/javascript">
function fun() {
//得到文本框内的值
var str = document.getElementById("t1").value;
//赋值给div
document.getElementById("div1").innerText = str
}
</script>
</head>
<body>
<center>
<div id="div1" style="width: 200px; height: 200px; background-color: antiquewhite; color:red;"></div>
<input type="text" id="t1" />
<input type="button" value="提交" onclick="fun()" />
</center>
</body>
</html>
八、JavaScript监听事件
- 1.监听事件:
监听用户在何时以何种方式对当前标签进行操作。
当监听到相关行为时,通知浏览器调用对应JavaScript
函数对当前用户请求进行处理 - 2.监听事件分类:
- 1)监听用户何时使用鼠标操作当前标签
- 2)监听用户何时使用键盘操作当前标签
- 3.监听用户何时使用鼠标操作当前标签:
- 1) onclick : 监听用户何时使用鼠标【单击】当前标签
- 2) onmouseover: 监听用户何时将鼠标【悬停】当前标签上方
- 3) onmouseout : 监听用户何时将鼠标从当前标签上方【移开】
- 4) onfocus : 监听用户何时通过鼠标让当前标签获得【光标】
- 5) onblur : 监听用户何时通过鼠标让当前标签丢失【光标】
练习实例
鼠标单机与悬停案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="text/javascript">
function fun() {
var flag = document.getElementById("two").checked;
var domArray = document.getElementsByName("one");
for (var i = 0; i < domArray.length; i++) {
domArray[i].checked = flag;
}
}
function fun1(domObj) {
domObj.style.backgroundColor = "blue";
}
function fun2(domObj) {
domObj.style.backgroundColor = "white";
}
</script>
</head>
<body>
<!--
* 1) onclick : 监听用户何时使用鼠标【单击】当前标签
* 2) onmouseover: 监听用户何时将鼠标【悬停】当前标签上方
* 3) onmouseout : 监听用户何时将鼠标从当前标签上方【移开】
* 4) onfocus : 监听用户何时通过鼠标让当前标签获得【光标】
* 5) onblur : 监听用户何时通过鼠标让当前标签丢失【光标】 -->
<center>
<table align="center" border="2">
<tr>
<td><input type="checkbox" id="two" onclick="fun(this)" />全选/全不选</td>
<td>职位</td>
<td>工资</td>
</tr>
<tr onmouseover="fun1(this)" onmouseout="fun2(this)">
<td><input type="checkbox" name="one" /></td>
<td>初级程序员</td>
<td>10000</td>
</tr>
<tr onmouseover="fun1(this)" onmouseout="fun2(this)">
<td><input type="checkbox" name="one"></td>
<td>高级程序员</td>
<td>40000</td>
</tr>
<tr onmouseover="fun1(this)" onmouseout="fun2(this)">
<td><input type="checkbox" name="one"></td>
<td>架构师</td>
<td>50000</td>
</tr>
</table>
</center>
</body>
</html>
鼠标获得与失去光标案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>User_Add.html</title>
<script type="text/javascript">
function fun1() {
//获得初始密码
var pass = document.getElementById("one").value;
if (pass == "") {
document.getElementById("one").focus();//让one对象获得光标
document.getElementById("font_1").innerText = "*密码不能为空";
} else {
document.getElementById("font_1").innerText = "*";
}
}
function fun2() {
var pass1 = document.getElementById("one").value;
var pass2 = document.getElementById("two").value;
if (pass1 != pass2) {
document.getElementById("two").focus();//让two获得光标
document.getElementById("font_2").innerText = "*两次密码不相同!"
} else {
document.getElementById("font_2").innerText = "*";
}
}
</script>
</head>
<body>
<center>
<form action="/demo1/user/add" method="get">
<table border="2">
<tr>
<td>
用户姓名:
</td>
<td>
<input type="text" name="userName" />
</td>
</tr>
<tr>
<td>
密码:
</td>
<td>
<input type="password" name="password" id="one" />
<font id="font_1" style="color: red;">*</font>
</td>
</tr>
<tr>
<td>
再次输入密码:
</td>
<td>
<input type="password" name="password" id="two" onfocus="fun1()" onblur="fun2()" />
<font id="font_2" style="color: red;">*</font>
</td>
</tr>
<tr>
<td>
性别:
</td>
<td>
<input type="radio" name="sex" value="男" />男
<input type="radio" name="sex" value="女" />女
</td>
</tr>
<tr>
<td>
邮箱地址:
</td>
<td>
<input type="text" name="email" />
</td>
</tr>
<tr>
<td>
<input type="submit" value="用户注册" />
</td>
<td>
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
- 4.监听用户何时使用键盘操作当前标签
- 1)onkeydown :监听用户何时在当前标签上【按下键盘】
- 2)onkeyup :监听用户何时在当前标签上【弹起键盘】
按下键盘实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>键盘弹起监听事件</title>
<script type="text/javascript">
var myArray = ["smite", "tomcat", "huasiye", "lvhao", "dairenjie", "zhousiyu", "duanqiqi", "zangzhengyu", "houxingyu", "shengyifan"];
function fun1() {
//1.取得文本框中的内容
var str = document.getElementById("one").value;
//2.到数组中定位包含了指定内容的字符串
var value = "";
if (str == "") {
document.getElementById("two").style.display = "none";
return;
}
for (var i = 0; i < myArray.length; i++) {
var str1 = myArray[i];
//indexOf() "abc".indexOf("a") 会返回a在abc中第一出现的位置
if (str1.indexOf(str) != -1) {
value = value + str1 + "<br/>";
}
}
if (value == "") {
document.getElementById("two").style.display = "none";
return;
}
//3.将定位字符串作为文字显示内容填充到Div中
document.getElementById("two").innerHTML = value;
document.getElementById("two").style.display = "block";//显示
}
</script>
</head>
<body>
<center>
<div><img src="bg.png"></div>
<input type="text" id="one" size="50" style="width: 300px; position: fixed;right: 790px;" onkeyup="fun1()" />
<input type="button" style="background-color: #4e6ef2; color: #ffffff; position: fixed;right: 722px; "
value="百度一下">
<br>
<div id="two"
style="background-color: antiquewhite; color:black;width: 300px;height: 300px;position: fixed;right: 790px; display: none;">
</div>
</center>
</body>
</html>
九、onload监听事件:
- 作用: 监听浏览器何时将网页中html标签加载完毕
- 意义: 浏览器在每加载一个HTML标签时,自动在内存中生成一个dom对象
在浏览器将网页所有标签加载完毕时,意味着当前网页中所有标签都
生成了对应的DOM对象,onload此时就可以触发调用函数对浏览器中
标签进行处理,此时不会出现未找到DOM对象的情况 - 使用:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="text/javascript">
function fun() {
window.alert("fun run");
}
</script>
</head>
<body onload="fun()">
</body>
</html>
十、基于DOM对象实现监听事件与HTML标签之间绑定
- 1.前提:
实际开发过程中,同一个监听事件往往有多个HTML标签进行绑定
这样会增加开发强度,在未来维护过程中增加维护难度 - 2.命令格式:
domObj.监听事件名 = 处理函数名 (在此处处理函数名后不能出现( )) - 3.举个例子:
var domObj = document.getElementById("one");
domObj.onclick = fun1;//注意函数名后不可以有()
//相当于
<input type= "button" id="one" onclick="fun1()"> //此处函数名后必须有()
实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="text/javascript">
function fun() {
var flag = document.getElementById("two").checked;
var domArray = document.getElementsByName("one");
for (var i = 0; i < domArray.length; i++) {
domArray[i].checked = flag;
}
}
function fun1() {
this.style.backgroundColor = "blue";
}
function fun2() {
this.style.backgroundColor = "white";
}
//声明一个函数,这个函数在浏览器加载页面完毕后自动被调用,
//执行时为所有数据行绑定onmouseover与onmouseout监听事件
function main() {
//1.定位所有tr标签关联的DOM对象
var domArray = document.getElementsByTagName("tr");
//2.利用for循环来实现多次绑定
for (var i = 0; i < domArray.length; i++) {
domArray[i].onmouseover = fun1;
domArray[i].onmouseout = fun2;
}
}
</script>
</head>
<body onload="main()">
<!--
* 1) onclick : 监听用户何时使用鼠标【单击】当前标签
* 2) onmouseover: 监听用户何时将鼠标【悬停】当前标签上方
* 3) onmouseout : 监听用户何时将鼠标从当前标签上方【移开】
* 4) onfocus : 监听用户何时通过鼠标让当前标签获得【光标】
* 5) onblur : 监听用户何时通过鼠标让当前标签丢失【光标】 -->
<center>
<table align="center" border="2">
<tr>
<td><input type="checkbox" id="two" onclick="fun(this)" />全选/全不选</td>
<td>职位</td>
<td>工资</td>
</tr>
<tr>
<td><input type="checkbox" name="one" /></td>
<td>初级程序员</td>
<td>10000</td>
</tr>
<tr>
<td><input type="checkbox" name="one"></td>
<td>高级程序员</td>
<td>40000</td>
</tr>
<tr>
<td><input type="checkbox" name="one"></td>
<td>架构师</td>
<td>50000</td>
</tr>
</table>
</center>
</body>
</html>