day33
今日内容
JavaScript:
ECMAScript BOM DOM
事件
DOM简单学习:为了满足案例要求
功能:控制html文档的内容 代码:获取页面标签(元素)对象Element
document.getElementById(“id值”);通过元素的id获取元素对象 操作Element对象:
修改属性值:
明确获取的对象是哪一个 查看API文档,找其中有哪些属性可以设置 修改标签体内容:
属性:innerHTML
获取元素对象 使用innerHTML属性修改标签体内容
事件简单学习
功能:某些组件被执行被执行了某些操作后,触发某些代码的执行。 如何绑定事件:
直接在html标签上,指定事件的属性(操作),属性值就是js代码
事件:onclick—单击事件 通过js获取元素对象,指定事件属性,设置一个函数
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
< script>
function fun ( ) {
alert ( "我被点了" ) ;
}
</ script>
</ head>
< body>
< img src = " img/off.gif" onclick = " fun()" >
< img src = " img/off.gif" id = " light" >
</ body>
< script>
function fun1 ( ) {
alert ( "我又被点了" ) ;
}
var light = document. getElementById ( "light" ) ;
light. onclick = fun1;
</ script>
案例–电灯开关
< body>
< img id = " light" src = " img/off.gif" >
</ body>
< script>
var light = document. getElementById ( "light" ) ;
var flag = false ;
light. onclick = function ( ) {
if ( flag) {
light. src = "img/off.gif" ;
flag = false ;
} else {
light. src = "img/on.gif" ;
flag = true ;
}
}
</ script>
BOM
概念:浏览器对象模型(Browser Object Model (BOM)
组成:
Window 对象:窗口对象 Navigator 对象:浏览器对象 Screen 对象:显示器对象 History 对象:历史记录对象 Location 对象:地址栏对象
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
< script>
</ script>
</ head>
< body>
< input type = " button" id = " openBtn" value = " 打开一个页面" >
< input type = " button" id = " closeBtn" value = " 关闭一个页面" >
</ body>
< script>
var openBtn = document. getElementById ( "openBtn" ) ;
var newWindow;
openBtn. onclick = function ( ) {
newWindow = open ( "https://www.baidu.com" ) ;
}
var closeBtn = document. getElementById ( "closeBtn" ) ;
closeBtn. onclick = function ( ) {
newWindow. close ( ) ;
}
function fun ( ) {
alert ( 'boom~~' ) ;
}
var id = setInterval ( fun, 2000 ) ;
clearInterval ( id) ;
</ script>
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
< script>
</ script>
</ head>
< body>
< input type = " button" id = " btn" value = " 刷新" >
< input type = " button" id = " goItcast" value = " 去传智播客" >
</ body>
< script>
var btn = document. getElementById ( "btn" ) ;
btn. onclick = function ( ) {
location. reload ( ) ;
}
var goItcast = document. getElementById ( "goItcast" ) ;
goItcast. onclick = function ( ) {
location. href = "https://www.itcast.cn" ;
}
</ script>
1. 创建(获取):
1. window.history
2. history
2. 方法:
* back() 加载 history 列表中的前一个 URL。
* forward() 加载 history 列表中的下一个 URL。
* go(参数) 加载 history 列表中的某个具体页面。
* 参数:
* 正数:前进几个历史记录
* 负数:后退几个历史记录
3. 属性:
* length 返回当前窗口历史列表中的 URL 数量。
案例2–轮播图
< head>
< meta charset = " UTF-8" >
< title> 轮播图</ title>
</ head>
< body>
< img src = " img/banner_1.jpg" width = " 100%" id = " banner" >
</ body>
< script>
var banner = document. getElementById ( "banner" ) ;
var number = 1 ;
function fun ( ) {
number++ ;
if ( number > 3 ) number = 1 ;
banner. src = "img/banner_" + number + ".jpg" ;
}
setInterval ( fun, 3000 ) ;
</ script>
案例3–自动跳转
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 自动跳转</ title>
< style>
p {
text-align : center;
}
#time {
color : red;
}
</ style>
</ head>
< body>
< p>
< span id = " time" > 5</ span> 秒之后,自动跳转到首页……
</ p>
</ body>
< script>
var time = document. getElementById ( "time" ) ;
var second = 5 ;
function showTime ( ) {
second -- ;
if ( second <= 0 ) {
location. href = "https://www.baidu.com" ;
}
time. innerText = second + "" ;
}
setInterval ( showTime, 1000 ) ;
</ script>
</ html>
DOM
概念:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)
将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作 W3C DOM 标准被分为 3 个不同的部分:
Core(核心) DOM - 所有文档类型的标准模型
Document:文档对象 Element:元素对象 Attribute:属性对象 Text:文本对象 Comment:注释对象 Node:节点对象,其他5个的父对象 XML DOM - XML 文档的标准模型 HTML DOM - HTML 文档的标准模型
核心DOM模型:
Document:文档对象
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
< script>
</ script>
</ head>
< body>
< div id = " div1" > div1</ div>
< div id = " div2" > div2</ div>
< div id = " div3" > div3</ div>
< div class = " cls1" > div4</ div>
< div class = " cls1" > div5</ div>
< input type = " text" name = " username" >
< br>
</ body>
< script>
var divs = document. getElementsByTagName ( "div" ) ;
document. write ( divs. length + "<br>" ) ;
var div_cls = document. getElementsByClassName ( "cls1" ) ;
document. write ( div_cls. length + "<br>" ) ;
var div_name = document. getElementsByName ( "username" ) ;
document. write ( div_name. length + "<br>" ) ;
var table = document. createElement ( "table" ) ;
alert ( table) ;
</ script>
</ html>
Element:元素对象
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
< script>
</ script>
</ head>
< body>
< a> 点我试一试</ a>
< input type = " button" id = " btn_set" value = " 设置属性" >
< input type = " button" id = " btn_remove" value = " 删除属性" >
</ body>
< script>
var btn_set = document. getElementById ( "btn_set" ) ;
btn_set. onclick = function ( ) {
var element_a = document. getElementsByTagName ( "a" ) [ 0 ] ;
element_a. setAttribute ( "href" , "https://www.baidu.com" ) ;
}
var btn_remove = document. getElementById ( "btn_remove" ) ;
btn_remove. onclick = function ( ) {
var element_a = document. getElementsByTagName ( "a" ) [ 0 ] ;
element_a. removeAttribute ( "href" ) ;
}
</ script>
</ html>
Node:节点对象,其他5个的父对象
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
< script>
</ script>
< style>
div {
border : 1px solid red;
}
#div1 {
width : 400px;
height : 400px;
}
#div2 {
width : 200px;
height : 200px;
}
#div3 {
width : 200px;
height : 200px;
}
</ style>
</ head>
< body>
< div id = " div1" >
< div id = " div2" > div2</ div>
div1
</ div>
< a href = " javascript:void(0);" id = " del" > 删除子节点</ a>
< a href = " javascript:void(0);" id = " add" > 添加子节点</ a>
</ body>
< script>
var element_a = document. getElementById ( "del" ) ;
element_a. onclick = function ( ) {
var div1 = document. getElementById ( "div1" ) ;
var div2 = document. getElementById ( "div2" ) ;
div1. removeChild ( div2) ;
}
var element_b = document. getElementById ( "add" ) ;
element_b. onclick = function ( ) {
var div1 = document. getElementById ( "div1" ) ;
var div3 = document. createElement ( "div" ) ;
div3. setAttribute ( "id" , "div3" ) ;
div1. appendChild ( div3) ;
}
var div2 = document. getElementById ( "div2" ) ;
var div1 = div2. parentNode;
alert ( div1) ;
</ script>
</ html>
案例4–动态表格
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 动态表格</ title>
< style>
table {
border : 1px solid;
margin : auto;
width : 500px;
}
td,th {
text-align : center;
border : 1px solid;
}
div {
text-align : center;
margin : 50px;
}
</ style>
</ head>
< body>
< div>
< input type = " text" id = " id" placeholder = " 请输入编号" >
< input type = " text" id = " name" placeholder = " 请输入姓名" >
< input type = " text" id = " gender" placeholder = " 请输入性别" >
< input type = " button" value = " 添加" id = " btn_add" >
</ div>
< table>
< caption> 学生信息表</ caption>
< tr>
< th> 编号</ th>
< th> 姓名</ th>
< th> 性别</ th>
< th> 操作</ th>
</ tr>
< tr>
< td> 1</ td>
< td> 令狐冲</ td>
< td> 男</ td>
< td> < a href = " javascript:void(0);" onclick = " del(this);" > 删除</ a> </ td>
</ tr>
< tr>
< td> 2</ td>
< td> 任我行</ td>
< td> 男</ td>
< td> < a href = " javascript:void(0);" onclick = " del(this);" > 删除</ a> </ td>
</ tr>
< tr>
< td> 3</ td>
< td> 岳不群</ td>
< td> ?</ td>
< td> < a href = " javascript:void(0);" onclick = " del(this);" > 删除</ a> </ td>
</ tr>
</ table>
< script>
var btn_add = document. getElementById ( "btn_add" ) ;
btn_add. onclick = function ( ) {
var id = document. getElementById ( "id" ) . value;
var name = document. getElementById ( "name" ) . value;
var gender = document. getElementById ( "gender" ) . value;
var td_id = document. createElement ( "td" ) ;
var text_id = document. createTextNode ( id) ;
td_id. appendChild ( text_id) ;
var td_name = document. createElement ( "td" ) ;
var text_name = document. createTextNode ( name) ;
td_name. appendChild ( text_name) ;
var td_gender = document. createElement ( "td" ) ;
var text_gender = document. createTextNode ( gender) ;
td_gender. appendChild ( text_gender) ;
var td_a = document. createElement ( "td" ) ;
var a = document. createElement ( "a" ) ;
a. setAttribute ( "href" , "javascript:void(0);" ) ;
a. setAttribute ( "onclick" , "del(this);" ) ;
a. innerText = "删除" ;
td_a. appendChild ( a) ;
var tr = document. createElement ( "tr" ) ;
tr. appendChild ( td_id) ;
tr. appendChild ( td_name) ;
tr. appendChild ( td_gender) ;
tr. appendChild ( td_a) ;
var table = document. getElementsByTagName ( "table" ) [ 0 ] ;
table. appendChild ( tr) ;
}
btn_add. onclick = function ( ) {
var id = document. getElementById ( "id" ) . value;
var name = document. getElementById ( "name" ) . value;
var gender = document. getElementById ( "gender" ) . value;
var table = document. getElementsByTagName ( "table" ) [ 0 ] ;
table. innerHTML += "<tr>\n" +
" <td>" + id + "</td>\n" +
" <td>" + name + "</td>\n" +
" <td>" + gender + "</td>\n" +
" <td><a href=\"javascript:void(0);\" οnclick=\"del(this);\">删除</a></td>\n" +
"</tr>" ;
}
function del ( obj ) {
var table = obj. parentNode. parentNode. parentNode;
var tr = obj. parentNode. parentNode;
table. removeChild ( tr) ;
}
</ script>
</ body>
</ html>
HTML DOM
标签体的设置和获取:innerHTML
< body>
< div id = " div1" >
div
</ div>
</ body>
< script>
var div = document. getElementById ( "div1" ) ;
var innerHTML = div. innerText;
div. innerHTML += "<input type='text'>" ;
</ script>
使用html元素对象的属性 控制样式
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> Title</ title>
< style>
.d1 {
border : 1px solid red;
width : 100px;
height : 100px;
}
.d2 {
border : 1px solid blue;
width : 200px;
height : 200px;
}
</ style>
</ head>
< body>
< div id = " div1" >
div
</ div>
< div id = " div2" >
div
</ div>
</ body>
< script>
var div1 = document. getElementById ( "div1" ) ;
div1. onclick = function ( ) {
div1. style. border = "1px solid red" ;
div1. style. width = "200px" ;
div1. style. fontSize = "20px" ;
}
var div2 = document. getElementById ( "div2" ) ;
div2. onclick = function ( ) {
div2. className = "d1" ;
}
</ script>
</ html>
事件监听机制
概念:某些组件被执行了某些操作后,触发某些代码的执行。
事件:某些操作,如:单击,双击,键盘按下,鼠标移动了 事件源:组件。如:按钮、文本输入框…… 监听器:代码。 注册监听:将事件、事件源、监听器结合在一起。当事件源上发生了某个事件,则触发执行某个监听器代码。 常见事件:
点击事件:
onclick:当用户单击元素时发生此事件。 ondblclick:当用户双击元素时发生此事件。 焦点事件:
onblur:当元素失去焦点时发生此事件。
onfocus:在元素获得焦点时发生此事件。 加载事件:
鼠标事件:
onmousedown:当用户在元素上按下鼠标按钮时,发生此事件。 定义方法时,定义一个形参,接受event对象
event对象的button属性返回触发鼠标事件时按下的鼠标按钮。
0:鼠标左键 1:滚轮按钮或中间按钮(如果有) 2:鼠标右键 onmouseenter:当鼠标指针移动到元素上时,发生此事件。 onmouseleave:当鼠标指针从元素上移出时,发生此事件。 onmousemove:当鼠标指针在元素上方移动时,发生此事件。 onmouseout:当用户将鼠标指针移出元素或其中的子元素时,发生此事件。 onmouseover:当鼠标指针移动到元素或其中的子元素上时,发生此事件。 onmouseup:当用户在元素上释放鼠标按钮时,发生此事件。 键盘事件:
onkeydown:当用户正在按下键时,发生此事件。 onkeypress:当用户按下键时,发生此事件 onkeyup:当用户松开键时,发生此事件。 选中和改变
onchange:当form元素的内容、选择的内容或选中的状态发生改变时,发生此事件 onselect:用户选择文本后(对于<input>和<textarea>)发生此事件 表单事件:
onsubmit:在提交表单时发生此事件。
用于校验表单内容,如果不符合则返回false,不提交表单,符合则返回true,提交表单 onreset:重置表单时发生此事件。
案例5–表格全选
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 表格全选</ title>
< style>
table {
border : 1px solid;
width : 500px;
margin-left : 30%;
}
td,th {
text-align : center;
border : 1px solid;
}
div {
margin-top : 10px;
margin-left : 30%;
}
.out {
background : white;
}
.over {
background : pink;
}
</ style>
</ head>
< body>
< table>
< caption> 学生信息表</ caption>
< tr>
< th> < input type = " checkbox" name = " cb" id = " firstcb" > </ th>
< th> 编号</ th>
< th> 姓名</ th>
< th> 性别</ th>
< th> 操作</ th>
</ tr>
< tr>
< td> < input type = " checkbox" name = " cb" > </ td>
< td> 1</ td>
< td> 令狐冲</ td>
< td> 男</ td>
< td> < a href = " javascript:void(0);" > 删除</ a> </ td>
</ tr>
< tr>
< td> < input type = " checkbox" name = " cb" > </ td>
< td> 2</ td>
< td> 任我行</ td>
< td> 男</ td>
< td> < a href = " javascript:void(0);" > 删除</ a> </ td>
</ tr>
< tr>
< td> < input type = " checkbox" name = " cb" > </ td>
< td> 3</ td>
< td> 岳不群</ td>
< td> ?</ td>
< td> < a href = " javascript:void(0);" > 删除</ a> </ td>
</ tr>
</ table>
< div>
< input type = " button" id = " selectAll" value = " 全选" >
< input type = " button" id = " unSelectAll" value = " 全不选" >
< input type = " button" id = " selectRev" value = " 反选" >
</ div>
</ body>
< script>
window. onload = function ( ) {
document. getElementById ( "selectAll" ) . onclick = function ( ) {
var cbs = document. getElementsByName ( "cb" ) ;
for ( var i = 0 ; i < cbs. length; i++ ) {
cbs[ i] . checked = true ;
}
}
document. getElementById ( "unSelectAll" ) . onclick = function ( ) {
var cbs = document. getElementsByName ( "cb" ) ;
for ( var i = 0 ; i < cbs. length; i++ ) {
cbs[ i] . checked = false ;
}
}
document. getElementById ( "selectRev" ) . onclick = function ( ) {
var cbs = document. getElementsByName ( "cb" ) ;
for ( var i = 0 ; i < cbs. length; i++ ) {
cbs[ i] . checked = ! cbs[ i] . checked;
}
}
document. getElementById ( "firstcb" ) . onclick = function ( ) {
var cbs = document. getElementsByName ( "cb" ) ;
for ( var i = 0 ; i < cbs. length; i++ ) {
cbs[ i] . checked = this . checked;
}
}
var trs = document. getElementsByTagName ( "tr" ) ;
for ( var i = 0 ; i < trs. length; i++ ) {
trs[ i] . onmouseover = function ( ) {
this . className = "over" ;
}
trs[ i] . onmouseout = function ( ) {
this . className = "out" ;
}
}
}
</ script>
</ html>
案例6–注册页面(js)
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 注册页面</ title>
< link rel = " stylesheet" href = " css/11_案例2_注册页面(css).css" >
</ head>
< script>
window. onload = function ( ) {
document. getElementById ( "form" ) . onsubmit = function ( ) {
return checkUserName ( ) && checkPassword ( ) ;
}
document. getElementById ( "username" ) . onblur = checkUserName;
document. getElementById ( "password" ) . onblur = checkPassword;
function checkUserName ( ) {
var username = document. getElementById ( "username" ) . value;
var reg_username = / ^\w{6,12}$ / ;
var flag = reg_username. test ( username) ;
var s_username = document. getElementById ( "s_username" ) ;
if ( flag) {
s_username. innerHTML = "<img width='35px' height='25px' src='img/gou.png'>"
} else {
s_username. innerHTML = "用户名格式有误"
}
return flag;
}
function checkPassword ( ) {
var password = document. getElementById ( "password" ) . value;
var reg_password = / ^\w{6,12}$ / ;
var flag = reg_password. test ( password) ;
var s_password = document. getElementById ( "s_password" ) ;
if ( flag) {
s_password. innerHTML = "<img width='35px' height='25px' src='img/gou.png'>"
} else {
s_password. innerHTML = "密码有误"
}
return flag;
}
}
</ script>
< body>
< div class = " rg_layout" >
< div class = " rg_left" >
< p> 新用户注册</ p>
< p> USER REGISTER</ p>
</ div>
< div class = " rg_center" >
< form action = " #" id = " form" method = " get" >
< table border = " 0" align = " center" width = " 550px" >
< tr>
< td class = " td_left" > < label for = " username" > 用户名</ label> </ td>
< td class = " td_right" > < input type = " text" name = " username" id = " username" placeholder = " 请输入用户名" >
< span id = " s_username" class = " error" > </ span>
</ td>
</ tr>
< tr>
< td class = " td_left" > < label for = " password" > 密码</ label> </ td>
< td class = " td_right" > < input type = " password" name = " password" id = " password" placeholder = " 请输入密码" >
< span id = " s_password" class = " error" > </ span>
</ td>
</ tr>
< tr>
< td class = " td_left" > < label for = " email" > Email</ label> </ td>
< td class = " td_right" > < input type = " email" name = " email" id = " email" placeholder = " 请输入email" > </ td>
</ tr>
< tr>
< td class = " td_left" > < label for = " name" > 姓名</ label> </ td>
< td class = " td_right" > < input type = " text" name = " name" id = " name" placeholder = " 请输入姓名" > </ td>
</ tr>
< tr>
< td class = " td_left" > < label for = " tel" > 手机号</ label> </ td>
< td class = " td_right" > < input type = " text" name = " tel" id = " tel" placeholder = " 请输入手机号" > </ td>
</ tr>
< tr>
< td class = " td_left" > < label> 性别</ label> </ td>
< td class = " td_right" >
< input type = " radio" name = gender value = " male" > 男
< input type = " radio" name = gender value = " female" > 女
</ td>
</ tr>
< tr>
< td class = " td_left" > < label for = " birthday" > 出生日期</ label> </ td>
< td class = " td_right" > < input type = " date" name = " birthday" id = " birthday" placeholder = " 请输入出生日期" > </ td>
</ tr>
< tr>
< td class = " td_left" > < label for = " checkcode" > 验证码</ label> </ td>
< td class = " td_right" >
< input type = " text" name = " checkcode" id = " checkcode" placeholder = " 请输入验证码" >
< img id = " img_check" src = " img/verify_code.jpg" >
</ td>
</ tr>
< tr>
< td colspan = " 2" id = " td_btn" >
< input type = " submit" value = " 注册" id = " btn_sub" >
</ td>
</ tr>
</ table>
</ form>
</ div>
< div class = " rg_right" >
< p> 已有账户?< a href = " #" > 立即登录</ a> </ p>
</ div>
</ div>
</ body>
</ html>