- BOM
- Navigator
- Screen
- Location
- History
- Window
- DOM
- Document
- Element
- Node
- CRUD_DOM树
- 控制样式
- 事件
- 概念
- 常见事件
跳转到目录
- BOM:
broswer object model
浏览器对象模型
Navigator 对象获取一些浏览器的信息.
- 属性
appName
返回浏览器的名称。 - 相关文档 https://www.w3school.com.cn/jsref/dom_obj_navigator.asp
Screen 对象包含有关客户端显示屏幕的信息。
- 属性
width
: 返回屏幕的宽度height
: 返回屏幕的高度 - 相关文档 https://www.w3school.com.cn/jsref/dom_obj_screen.asp
Location 对象包含有关当前 URL 的信息。
- 创建(获取)
- window.location
- location
- 方法
reload()
: 重新加载当前文档,刷新操作. - 属性
href
: 设置或返回完整的url. - Demo
// 获取input标签 var btn = document.getElementById("btn"); // 设置事件 btn.onclick = function (){ location.href = "https://www.baidu.com"; }
- 相关文档 https://www.w3school.com.cn/jsref/dom_obj_location.asp
History 对象包含用户(在浏览器窗口中)访问过的 URL。
- 创建(获取)
- window.history
- history
- 方法
back()
加载 history 列表中的前一个 URL。forward()
加载 history 列表中的下一个 URL。go(参数)
加载 history 列表中的某个具体页面。参数: 正数:前进几个历史记录 负数:后退几个历史记录
- 属性
length
: 返回当前窗口历史列表中的url数量.
跳转到目录 Window 对象表示浏览器中打开的窗口。
- 方法
- 与弹出框有关的方法
alert()
: 显示带有一段消息和一个确认按钮
的警告框.confirm()
: 显示带有一段消息,以及确认和取消两个按钮的对话框. 若点击确定,该方法返回true, 点击取消,返回false.prompt()
: 显示可提示用户输入的对话框. 返回值为用户输入的内容. - 与打开关闭有关的方法
close()
:关闭浏览器窗口. 谁调用的,就关闭哪个窗口open(arg1, arg2, arg3, arg4)
: 打开一个新的浏览器窗口.注意:
这4个参数都是可选的, arg1 传入url, arg3传入窗口的特征(设置宽高等)window.open("https://www.baidu.com","","width=100,height=100");
- 与定时器有关的方法
setTimeout(code,millisec)
: 在指定的毫秒数后调用函数或计算表达式。clearTimeout(id_of_settimeout)
: 取消由 setTimeout() 方法设置的 timeout。传入某个定时器的id用来取消指定的定时器.setInterval(code,millisec)
: 按照指定的周期(以毫秒计)来调用函数或计算表达式。clearInterval(id_of_settimeout)
: 取消由 setInterval() 设置的 timeout。
- 属性
- 获取其他BOM对象
History
location
Navigator
Screen
- 获取DOM对象
document
- 特点
Window对象不需要创建可以直接使用, window.方法名() window引用可以省略. 方法名();
跳转到目录
-
DOM:
Document Object Model
文档对象模型- 文档: 超文本文档(超文本标记文档) html, xml
- 对象: 提供了属性和方法.
- 模型: 使用属性和方法操作超文本标记文档
- 可以使用js里面的dom里面提供的对象,使用这些对象的属性和方法,对标记型文档进行操作.
- dom里面已经将html里面的
标签
,属性
,文本内容
都封装成了对象.
-
dom解析html文档的过程
根据html的层级结构,在内存中分配一个
树形结构
, 需要把html中的每部分封装为对象.Document
对象: 整个文档Element
对象: 标签对象Attribute
对象: 首先要获取标签对象Text
对象: 首先要获取标签对象Comment
对象: 注释对象Node节点对象
: 这个对象是上面这些对象的父对象, 如果在对象内找不到想要的方法, 此时可以在Node节点对象中去查找想要的方法.
跳转到目录
- 创建(获取): 在html dom模型中可以使用window对象来获取
- window.document
- document
- 方法
write()
向页面输出变量/html代码document.write("abc"); document.write("");
-
获取Element对象
getElementById()
: 根据id属性值
获取元素对象,id属性值一般唯一
getElementsByTagName()
:根据元素名称
获取元素对象们。返回值是一个数组getElementsByClassName()
:根据Class属性值
获取元素对象们。返回值是一个数组getElementsByName()
: 根据name属性值
获取元素对象们。返回值是一个数组 -
创建其他的DOM对象 createAttribute(name) createComment() createElement() createTextNode()
-
跳转到目录
- 创建(获取): 通过document来获取和创建
- 方法(首先通过document来获取元素,然后通过元素进行操作)
getAttribute(attributename)
: 获取指定的属性setAttribute(attributename,attributevalue)
: 给元素添加属性removeAttribute(attributename)
: 移除指定名称的属性注意:
不能删除value - 获取标签下面的子标签
childNodes
: 这个属性兼容性很差getElementsByTagName(标签名)
: 兼容性好,获取标签下面子标签的唯一有效方法.
-
特点 所有dom对象都可以被认为是一个节点.
-
属性
nodeName
:获取节点的名称nodeType
: 获取节点的类型nodeValue
: 获取节点的value值 因为dom在解析html的时候, html里面的标签,属性,文本
都是一个节点,所以上面的三个属性对其都是不同的值.- 标签节点对应的nodeType为1
- 属性节点对应的nodeType为2
- 文本节点对应的nodeType为3
parentNode
: 获取父节点的属性childNodes
: 得到所有子节点,兼容性差firstChild
: 获取第一个子节点lastChild
: 获取最后一个子节点nextSibling
: 返回一个给定节点的下一个兄弟节点previousSibling
: 返回一个给定节点的上一个兄弟节点aaaaaa bbbbbb cccccc dddddd // 获取li的父节点 var li1 = document.getElementById("li1"); var ul1 = li1.nextSibling; alert(ul1.id); // 获取ul的第一个子节点 var ul1 = document.getElementById("ulid"); var li1 = ul1.lastChild; alert(li1.id); // 获取li2的上一个节点和下一个节点 var li2 = document.getElementById("li2"); var li1 = li2.previousSibling; var li3 = li2.nextSibling; alert(li1.id); alert(li3.id);
跳转到目录
-
查找节点
getElementById()
:通过节点的id属性,查找指定节点. -
添加节点
appendChild()
:向节点的子节点列表的结尾添加新的子节点。 -
插入节点
insertBefore(newNode, oldNode)
: 向oldNode节点前插入一个新节点.通过父节点添加 -
删除节点
removeChild()
:删除(并返回)当前节点的指定子节点。 -
替换节点
replaceChild()
:用新节点替换一个子节点。通过父节点替换 -
复制节点
cloneNode(true)
: 复制节点 -
innerHTML
属性 作用:- 获取文本内容
- 向标签里面设置内容(可以是html代码)
-
Demo
Title
div#div1 {
width: 360px;
height: 150px;
border: 2px solid red;
}
div#div2 {
width: 360px;
height: 150px;
border: 2px solid black;
}
one
two
three
four
// 添加节点
/*
1.获取到ul
2.获取到div2
3.把ul添加到div2
*/
var input1 = document.getElementById("input1");
input1.onclick = function () {
var ul = document.getElementById("ul1");
var div = document.getElementById("div2");
div.appendChild(ul);
}
// 插入节点
/*
1.获取到li3标签
2.创建li
3.创建文本
4.把文本添加到li下面
5.获取到ul
6.把li添加到ul下面
*/
var input2 = document.getElementById("input2");
input2.onclick = function () {
var li3 = document.getElementById("li3");
var li = document.createElement("li");
var text = document.createTextNode("朝阳红");
li.appendChild(text);
var ul = document.getElementById("ul1");
ul.insertBefore(li, li3);
}
// 删除节点
/*
1.获取到li标签
2.执行父节点ul标签
3.执行删除
*/
var input3 = document.getElementById("input3");
input3.onclick = function () {
var li3 = document.getElementById("li3");
var ul = document.getElementById("ul1");
ul.removeChild(li3);
}
// 替换节点
/*
1.获取到li标签
2.创建标签li
3.创建文本
4.把文本添加到li下面
5.获取父节点Ul标签
6.执行替换
*/
var input4 = document.getElementById("input4");
input4.onclick = function () {
var li3 = document.getElementById("li3");
var li = document.createElement("li");
var text = document.createTextNode("HelloWorld");
li.appendChild(text);
var ul = document.getElementById("ul1");
ul.replaceChild(li, li3);
}
// 复制节点(把ul列表复制到另一个div中)
/*
1.获取到ul
2.执行复制方法:cloneNode(true)
3.把复制后的内容放到div2中
获取div2
appendChild方法
*/
var input5 = document.getElementById("input5");
input5.onclick = function () {
var ul = document.getElementById("ul1");
var ulClone = ul.cloneNode(true);
var div = document.getElementById("div2");
div.appendChild(ulClone);
}
控制样式
- 通过DOM来控制标签的样式
- 使用
style
属性来设置 - 提前定义好类选择器的样式,通过元素的
className
属性来设置其class属性值。
Title
.sun {
font-weight: bold;
font-size: 30px;
color: skyblue;
border: 2px dashed #000;
}
桂朝阳
大太阳
// 获取类名为zy的标签
var zy = window.document.getElementsByClassName("zy")[0];
// alert(zy.className);
// 方式一(自己添加)给类名为zy的div添加样式
// zy.style.border = "1px solid #ccc";
// zy.style.fontSize = "20px";
// 方式二(调用已经写好的)
zy.className = "sun";
事件
跳转到目录
事件监听机制- 概念:
某些组件被执行了某些操作后,触发某些代码的执行。
- 事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了
- 事件源:组件。如: 按钮 文本输入框…
- 监听器:代码。
- 注册监听:
将事件,事件源,监听器结合在一起
。 当事件源上发生了某个事件,则触发执行某个监听器代码。
-
点击事件:
onclick
:单击事件 ondblclick:双击事件 -
焦点事件
onblur
:失去焦点 * 一般用于表单验证 onfocus:元素获得焦点。 -
加载事件: onload:一张页面或一幅图像完成加载。
-
鼠标事件: onmousedown 鼠标按钮被按下。 * 定义方法时,定义一个形参,接受event对象。 * event对象的button属性可以获取鼠标按钮键被点击了。 onmouseup 鼠标按键被松开。 onmousemove 鼠标被移动。 onmouseover 鼠标移到某元素之上。 onmouseout 鼠标从某元素移开。
-
键盘事件: onkeydown 某个键盘按键被按下。 onkeyup 某个键盘按键被松开。 onkeypress 某个键盘按键被按下并松开。
-
选择和改变 onchange 域的内容被改变。 onselect 文本被选中。
-
表单事件:
onsubmit
确认按钮被点击。 * 可以阻止表单的提交 * 方法返回false则表单被阻止提交。 onreset 重置按钮被点击。