系列文章目录
Web前端 学习知识点总结(一)HTML基本标签.
Web前端 学习知识点总结(二)之Form和Css选择器.
Web前端 学习知识点总结(三)Css字体、文本样式以及盒子模型.
Web前端 学习知识点总结(四)之display 和 float.
Web前端 学习知识点总结(五)qq导航条案例,使用min-width解决留白.
Web前端 学习知识点总结(六)定位position.
Web前端 学习知识点总结(七)Css3动画animation.
Web前端 学习知识点总结(八)JavaScript的常用基础.
Web前端 学习知识点总结(九)JavaScript的BOM和DOM基础.
Web前端 学习知识点总结(十)jQuery基础 获取文本和选择器.
Web前端 学习知识点总结(十一)jQuery进阶 动画和节点操作.
Web前端 学习知识点总结(十二)jQuery进阶 表单验证和简单正则表达式.
Web前端 学习知识点总结(十三)学生管理系统案例.
文章目录
前言
在掌握了基础的JS语句后,接下来的重要模型BOM和DOM。它们进一步,可以帮助我们解决大部分的页面问题,BOM是浏览器的对象模型,主要的功能和作用是提供了浏览器的交互,且提高了用户的体验。DOM是页面对象模型,可以找到页面中所有的HTML标签和CSS的样式,方便添加动态的效果,完成需要的功能和设计。
一、BOM
浏览器对象模型 (BOM(Browser Object Model ) 使 JavaScript 有能力与浏览器"对话"。
所有浏览器都支持 window 对象。它表示浏览器窗口。
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。
全局函数是 window 对象的方法。
甚至 HTML DOM 的 document 也是 window 对象的属性之一
1.1 Window方法
location和window内部的一些基本方法:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--window 属性
location
location.pathname //可以返回url的路径
location.href="" //可以跳转到指定的地址
方法
也可以不加window直接使用
window.open() 打开新的界面
window.close() 关闭界面
alert() 提醒
prompt() 输入信息
confirm() 点确定返回true 点取消返回false
-->
<!--<input type="button" name="" id="" value="打开" οnclick="javascript:window.open
('http://www.baidu.com')"/>-->
<input type="button" name="" id="" value="打开" onclick="doOpen()"/>
<input type="button" name="" id="" value="关闭" onclick="doClose()"/>
<input type="button" name="" id="" value="alert" onclick="doalert()"/>
<input type="button" name="" id="" value="prompt" onclick="doPrompt()"/>
<input type="button" name="" id="" value="Confirm" onclick="doConfirm()"/>
<script>
function doOpen(){
window.open("http://www.baidu.com");
window.location.href="http://www.baidu.com";
}
function doClose(){
window.close();
}
function doalert(){
window.alert("kanba");
}
// 输入框
function doPrompt(){
var result=window.prompt("请输入你的名字");
alert(result);
}
// 提示框
function doConfirm(){
window.confirm("确定要删除吗?")
}
</script>
</body>
</html>
1.2 history方法
-
Window history.back() ;
history.back() 方法加载历史列表中的前一个 URL。和浏览器中点击后退按钮的作用相同。
-
Window history.forward() ;
history forward() 方法加载历史列表中的下一个 URL。
和浏览器中点击前进按钮的作用相同。 -
go(1) 正值前进 负值后退。
1.3 document方法
- getElementById() 通过id标签找到html标签的位置。
- getElementsByName() 通过name标签找到html标签的位置。
- getElementsByTagName() 通过html的标签名字,找到html标签的位置。
可以使用组合标签:
如:
getElementById().getElementsByTagName();可以找打id 下面的指定标签。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--document 文档
属性
referrer 前置页面的url
方法
write()
getElementById() 找到标签 唯一的id
.innerHTML 可以获取标签内的内容 且是双标签
.value 是表单元素标签中的内容 (单标签)
下两者返回的是一个集合
getElementsByName() 按照name属性 形成一个数组 拿出一系列的值
getElementsByTagName() 按照标签名
-->
<p id="t">当幸福来敲门</p>
<input type="text" id="username" /><br />
<div>
<span name="season">春</span>
<span name="season">夏</span>
<span name="season">秋</span>
<span name="season">冬</span>
</div>
<!--用于测试-->
<input type="button" onclick="changeSeason_02()" value="换名" />
<script>
// 函数1 标题进行改变
function changeTitle(){
// 拿到整个p标签
var p = document.getElementById("t");
p.innerHTML="幸福来了";
}
// 函数2 名字的改变
function changeName(){
var inp = document.getElementById("username");
inp.value="lisi"
}
// 函数3 通过name 改变季节
function changeSeason(){
// span列表
var spans = document.getElementsByName("season");
for(var i = 0;i < spans.length; i++){
alert(spans[i].innerHTML);
}
}
// 函数4 通过tag标签寻找
function changeSeason_02(){
// span列表
var spans = document.getElementsByTagName("span");
for(var i = 0;i < spans.length; i++){
alert(spans[i].innerHTML);
}
}
</script>
</body>
</html>
1.4 Window的时间函数。
- setTimeout(函数名 延迟时间) 延迟多长时间来执行
一般用来做静态效果。 - setInterval(“函数名”,1000) 间隔多长时间执行函数 要搭配
(1)先让var timer=setInterval(“要执行的函数名称”,1000(设定时间));
(2)clearTimeout(timer);清除time。
可用来做动态效果。
1.5 window综合案例 网页时间倒计时后,跳转到百度
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<p id="p">2</p>
<input type="button" value="开始" onclick="star()"/>
<input type="button" value="取消" onclick="stop()"/>
<script type="text/javascript">
function star(){
//倒计时的函数,用时间来控制,因为是动态的所以选用setInterval()
time=setInterval("getP()",1000);
}
function stop(){
//清除影响
clearTimeout(time);
}
function getP(){
//找到网页的p标签,用“get..IP”
var p = document.getElementById("p");
//找到之后减一
p.innerHTML=p.innerHTML-1;
//如果等于零就跳转
if(p.innerHTML==0){
location.href="http://www.baidu.com";
}
}
</script>
</body>
</html>
取消可以暂停
之后跳转到百度页面
二、DOM
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
通过DOM可以访问网页内全部的元素((HTML+CSS)内全部的 标签内容 和属性值)。
HTML DOM 模型被构造为对象的树。
该内容在之前学习HTML基础的时候有提及。
下图的html的文档可以解析成下列的树形结构。
2.1DOM的操作分类:
- DOM_CORE dom内部的指令;
- HTML_DOM 控制html的指令;
- CSS_DOM 控制CSS的指令。
2.2 Node
标签element
(1)创建节点
document.createElement(“p”);
(2)删除节点
parent.removeChild(img);
(3)创建父节点
var parent=document.getElementById(“container”);
(4)给父节点建立个孩子
parent.appendChild§;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="container">
<img src="img/微信图片_20201012202508.png"/ id="img">
<img src="img/微信图片_20201012202508.png"/ id="img">
<img src="img/微信图片_20201012202508.png"/ id="img">
<img src="img/微信图片_20201012202508.png"/ id="img">
</div>
<script type="text/javascript">
var p = document.createElement("p");
p.innerHTML="这就是内容"
var parent=document.getElementById("container")
// 给父节点添加孩子
parent.appendChild(p);
var img=document.getElementById("img");
// 将节点放在img的前面 指定位置
parent.insertBefore(p,img);
// 删除
// parent.removeChild(img);
// 到父节点,再找子节点( 当不确定父节点的时候 )
img.parentNode.removeChild(img);
</script>
</body>
</html>
2.3 属性的更改
对于CSS的属性进行设置主要有两种方案
(1)元素.setAttribute(属性名,替换),
(2)元素.属性=替换。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--属性
设置属性
(1)setAttribute
(2)元素.属性=
-->
<img src="img/微信图片_20201012202508.png" id="logo" width="100px"/>
<input type="button" name="" id="" value="换图" onclick="changeImg()"/><br />
<input type="text" name="" id="name" value="" />
<input type="button" name="" id="kongjian" value="修改该属性" onclick="changeArr()"/><br />
<script type="text/javascript">
function changeImg(){
var img = document.getElementById("logo");
// img.src = "img/微信图片_20200928200600.jpg";
// 更规范
alert(img.getAttribute("src"));
img.setAttribute("src","img/微信图片_20200928200600.jpg");
}
function changeArr(){
var name = document.getElementById("name");
var kongjian = document.getElementById("kongjian");
// name.type="password";
if(name.type=="text"){
name.type="password";
}else{
name.type="text";
}
}
</script>
</body>
</html>
2.3案例 用JS更换图片
有了可以更改属性的设置后,很多复杂的CSS或HTML可以用更换属性值的操作轻松的解决,比如更换图片的CSS案例中,需要用到寻找邻接的兄弟节点的方法,对建立html的结构有着严格的要求,必须要建立成兄弟节点才可以找得到。
但是在JS中,可以通过getElement.Ip(),或者其他的get函数找到我们需要修改的html值,很方便。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<p>
选择你最喜欢的书:
<input type="radio" value="1" onclick="img_01()" name="book" id="first"/>
<label for="first">我和我的狗狗一起活下来</label>
<input type="radio" value="2" onclick="img_02()" name="book" id="second"/>
<label for="second">灰霾来了怎么办</label>
</p>
<div>
<img id="img"/>
<p id="p"></p>
</div>
</body>
<script type="text/javascript">
function img_01(){
var img=document.getElementById("img");
var p = document.getElementById("p");
// img.src="img/图片1.png";
img.setAttribute("src","img/图片1.png");
p.innerHTML="我和我的狗狗一起活下来";
}
function img_02(){
var img=document.getElementById("img");
var p = document.getElementById("p");
// img.src="img/图片1.png";
img.setAttribute("src","img/图片2.png");
p.innerHTML="灰霾来了怎么办";
}
</script>
</html>
显示结果:
2.3 窗口事件
(1) window.onload
onload 和 onunload 事件会在用户进入或离开页面时被触发。
onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。
onload 和 onunload 事件可用于处理 cookie。
(2)Onclick 当是鼠标点击时后面跟着的函数。
(3)鼠标的事件
-
onmouseenter(当鼠标进入时)
-
onmouseleave(当鼠标离开时)
-
onmousemove(当鼠标移动时)
-
onmouseover(当鼠标悬浮时)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
p{
width: 100px;
height: 100px;
border: 1px solid red;
}
</style>
</head>
<body>
<p οnmοuseenter="doEnter()" οnmοuseleave="doLeave()"
<!--οnmοusemοve="doMove()"-->
οnmοuseοver="doOver()"></p>
</body>
<script type="text/javascript">
// window.οnlοad=function(){
// alert("ssnfofnidaon");
// }
function doEnter(){
console.log("enter------")
}
function doLeave(){
console.log("leave------")
}
// function doMove(){
// console.log("move------")
// }
function doOver(){
console.log("Over------")
}
</script>
</html>
(4)键盘的事件
(1)οnkeyup="";当键盘摁下的时候,触发的事件;
(2)οnkeydοwn="";当键盘弹起的时候,触发的事件。
一般来说,两个方法可以获取全部的键盘字符。
“13”是回车的数字字符。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--<input type="" name="" id="" value="" οnkeyup="doUp()" />-->
<input type="" name="" id="" value="" onkeydown="doDown()" />
</body>
<script type="text/javascript">
function search(){
alert("开始搜索")
}
function doUp(){
// if(event.keyCode==13)
// {search()}
alert(event.keyCode)
}
function doDown(){
// if(event.keyCode==13)
// {search()}
alert(event.keyCode)
}
</script>
</html>