黑马程序员技术交流社区
标题: 【济南中心】PHP课程同步笔记day07:DOM介绍 [打印本页]
作者: 小鲁哥哥 时间: 2017-4-8 11:12
标题: 【济南中心】PHP课程同步笔记day07:DOM介绍
本帖最后由 小鲁哥哥 于 2017-4-8 11:28 编辑
【济南中心】PHP课程同步笔记day07:DOM介绍
DOM(文本对象模型(Document Object Model))
W3C组织推荐的处理可扩展标志语言的标准编程接口。W3C的DOM,可以使程序或脚本(JS或AS、JScript),动态的访问或操作文档的内容、结构、样式。
DOM只是一个标准,就是操作网页的标准。而这个标准(模型)在浏览器中,以“对象”的方式实现。
DOM的分类
核心DOM:提供了操作HTML文档(显示)或XML文档(存储数据)的公共的属性和方法。
HTMLDOM:针对HTML文档,提供的专有的属性和方法。
EventDOM:事件DOM,提供了很多的常用事件。
CSSDOM:提供了操作CSS的一个接口。
HTML节点树
DOM中节点的类型:
document文档节点:代表整个网页,document文档节点不对应标记。是访问文档中各元素的起点。
element元素节点:元素节点对应于网页中的各标记。
attribute属性节点:每个元素都有若干个属性。
Text文本节点:文本节点是最底层节点。
核心DOM公共属性和方法
nodeName:节点名称。
nodeValue:节点的值。
firstChild:第一个子节点。
lastChild:最后一个子节点。
parentNode:父节点。
childNodes:子节点列表,是一个数组。
节点访问
查找html节点的方法
document.firstChild
document.documentElement(兼容性较好)
查找body节点的方法
document.firstChild.lastChild
document.body(推荐使用)
节点属性
1、getAttribute()——获取属性的值
描述:获取节点属性的值。
语法:nodeObj.getAttribute(name)
参数:name代表当前节点的某个属性。
举例:var src = imgObj.getAttribute(“src”)
2、setAttribute()——添加属性
描述:给某个节点添加属性。
语法:nodeObj.setAttribute(name,value)
参数:
name代表属性名称。
value代表属性的值。
举例:imgObj.setAttribute(“src” , “images/02.jpg”)
3、removeAttribute()——删除属性
描述:删除某个节点的属性。
语法:nodeObj.removeAttribute(name)
举例:imgObj.removeAttribute(“src”)
案例:
[HTML] 纯文本查看 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<script type="text/javascript">
//当网页加载完成,调用JS程序
window.onload = function(){
//查找img节点
var imObj = document.body.firstChild;
//向img节点添加src属性
imgObj.setAttribute("src","images/01.jpg");
//向img节点添加width属性
imgObj.setAttribute("width",400);
//向img节点添加border属性
imgObj.setAttribute("border",2);
//向img节点添加style属性
imgObj.setAttribute("style","padding:20px");
//向img节点添加onclick属性
imgObj.setAttribute("onclick","removeImg(this)");
}
//函数:删除src属性
function removeImg(imgObj){
//删除src属性
imgObj.removeAttribute("src");
imgObj.removeAttribute("width");
}
</script>
</head>
<body>
<img />
</body>
</html>
节点操作
createElement()创建节点
语法:var nodeObj = document.createElement(tagName)
appendChild()追加节点
语法:parentNode.appendChild(childNode)
HTMLDOM简介和新特性
核心DOM中,对节点的访问,都是从根节点开始的,访问方式十分麻烦。特别是当节点层次很深时,更是麻烦。因此,才有了HTMLDOM。
1、HTMLDOM的新特性
每一个HTML标记,都对应一个对象。如:<img>标记,就是一个img对象。
每一个HTML标记的属性,与对应的元素对象的属性,一一对应。
<img>属性:src、width、height、border、style、title、id、class等。
在JS中,img对象属性:src、width、height、border、style、title、id、className等。
代码:
[HTML] 纯文本查看 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<script type="text/javascript">
//网页加载完成后,调用匿名函数
window.onload = function(){
//获取<img>元素对象
var imgObj = document.body.firstChild;
//添加imgObj对象属性
//imgObj.setAttribute("src","images/01.jpg");
imgObj.src = "images/01.jpg";
imgObj.width = 400;
imgObj.border = 2;
imgObj.style = "border:5px dotted red;padding:10px;";
}
</script>
</head>
<body>
<img />
</body>
</html>
2、HTML DOM访问HTML元素的方法
(1)根据元素的id查找对象——document.getElementById(id)
[HTML] 纯文本查看 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<script type="text/javascript">
//当网页加载完成,调用JS程序
window.onload = function(){
//获取id = img01的图片对象
var imObj = document.getElementById("img01");
//添加属性
imgObj.src = "images/01.jpg";
imgObj.width = 400;
}
</script>
</head>
<body>
<img id="img01"/>
</body>
</html>
(2)根据HTML标签名找对象
描述:根据HTML标签名找对象
语法:var arr = parentNode.getElementsByTagName(tagName)
参数:
tagName就是要查找的标签名称,不能带尖括号。
parentNode代表上层节点。
返回值:返回一个对象数组。
举例:ulObj.getElementsByTagName(“li”)
[HTML] 纯文本查看 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<script type="text/javascript">
//当网页加载完成,调用JS程序
window.onload = init;
function init(){
//获取id = img01的图片对象
var ulObj = document.getElementById("img01");
var arr = ulObj.getElementsByTagName("li");
//循环数组
for(var i=0;i<arr.length;i++){
arr.style = "color:blue";
arr.onmouseover = function(){
this.style.backgroundColor = "yellow";
}
arr.onmouseout = function(){
this.style.backgroundColor = "";
}
}
}
</script>
</head>
<body>
<ul id="u01">
<li>HTML超文本标注语言</li>
<li>CSS层叠样式表</li>
<li>JavaScript客户端脚本程序</li>
</ul>
</body>
</html>
元素对象的属性
tagName:与nodeName功能一样。
className:与class属性功能一样。
innerHTML:设置或读取某个标记中的所有内容,包括HTML文本。只能用于双边标记。
nodeValue:指纯文本。
offsetWidth:指元素的可见宽度,不含滚动条中的内容。只读属性。不带px单位。
offsetHeight:指元素的可见高度,不含滚动条中的内容。只读属性。不带px单位。
scrollWidth:指元素的总宽度,包含滚动条中的内容。只读属性。不带px单位。
scrollHeight:指元素的总高度,包含滚动条中的内容。只读属性。不带px单位。
scrollTop:当元素出现滚动条时,向下拖动滚动条,内容向上滚动的距离。可读可写属性。不带px单位。
如果该元素没有滚动条,则scrollTop的值为0,该值只能是正值。
scrollLeft:与scrollTop描述一样,只是向左滚动的距离。
事件:onscroll
描述:当拖动滚动条时发生
案例:
代码实现:
[JavaScript] 纯文本查看 复制代码
<script type="text/javascript">
var dome;//全局变量
var timer;//定时器变量
//网页加载完成,动画自动开始
window.onload = function(){
//获取三个<div>对象
dome = document.getElementById("dome");
var dome1 = document.getElementById("dome1");
var dome2 = document.getElementById("dome2");
//将dome的高,复制给dome1和dome2
dome1.style.height = dome.offsetHeight+"px";
dome2.style.height = dome.offsetHeight+"px";
//将dome1的内容,复制到dome2中
dome2.innerHTML = dome1.innerHTML;
//鼠标放上停止滚蛋,鼠标移出继续滚动
dome.onmouseover = function(){
//清除定时器
window.clearInterval(timer);
}
dome.onmouseout = function(){
timer = window.setInterval("start2()",40);
}
//定时器
timer = window.setInterval("start2()",40);
}
function start2(){
//如果滚动上去的距离,等于任何一个<div>高度
//则开始下一次滚动
if(dome.scrollTop == dome.offsetHeight){
dome.scrollTop = 0;
}else{
dome.scrollTop++;
}
}
</script>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |