js DOM简介 DOM节点对象 DHTML

1.DOM 简介

JavaScript核心:
DOM:document object model 文档对象模型
BOM:   browser   object model 浏览器对象模型

			通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。
            HTML DOM (文档对象模型)
            当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)


			节点:
			节点种类:元素节点(标签)   文本节点(内容)  属性节点   等十二种
			节点关系:兄弟节点   父子关系    父节点 子节点  兄弟节点
			节点对象:属性和方法

document 文档对象
body        document.body
innerHTML    开始标记和结束标记之间的内容

// document.write('hello');
// document.getElementById('box');

2.节点对象属性

innerHTML  开始标记和结束标记之间的内容
			document  文档对象
				body

			节点对象的属性:
				childNodes     获取所有的子节点(元素节点、文本节点)    NodeList   索引 0    length  节点个数
				firstChild      第一个节点
				lastChild       最后一个节点
				parentNode  父节点
				previousSibling   上一个兄弟节点
				nextSibling    下一个兄弟节点

举例子:

代码如下

<body>
	<div id="box">
		<div>你好</div>
		<div>我好</div>
	</div>
</body>
 console.log(document.body);  //body元素节点
 var bd=document.body ;  //body
	var o=document.getElementById('box');
	
	var cs=o.childNodes;//子节点
	 console.log(cs[1]);
	cs[1].innerHTML='hello world';//修改内容
	cs[3].innerHTML='哈哈哈';
	console.log(o.firstChild);//第一个孩子
	console.log(cs.length);

节点

document  文档对象

				属性:
					body         body元素对象
					title        标题
					URL 		 网页地址

					links          超链接    HTMLCollection  集合  索引  0       length
					images         图片
					forms          

				方法:
					write
					writeln
					getElementById      根据ID查找节点对象
						    返回值:   节点对象,null

节点操作: 增删改查

		增:
			write
			document.createElement      创建节点
			obj.appendChild        追加子节点
			
		删除节点:
			obj.removeChild
		复制节点:
			cloneNode(flag)      
				flag  布尔类型    true  复制包含子节点  false  不包含子节点  默认为false

例如:
document.body.appendChild(op)
意思是:将节点对象添加到body中

DOM节点的获取
操作节点,必须首先找到该元素,有三种方法来做这件事:

		1、通过id找到HTML元素 
		document.getElementById(“demo”);
		
		2、通过标签名找到HTML元素 
		document.getElementsTagName(“div”);
		
		3、通过类名找到HTML元素 
		document.getElementByClassname(“a”);
		
		4、通过类名查找 HTML 元素在 IE 5,6,7,8 中无效 
		
		标签=document.getElementById(“demo”); 通过ID获得标签 
		他的返回值是一个标签,可以直接使用。获得属性值,设置属性。 
		标签数组= document.getElementsByTagName(“div”); 通过标签名获得标签数组 
		标签数组= document.getElementsByClassName(“a”);通过类名获得标签数组 
		他们两个的返回值是标签数组,习惯性是遍历之后再使用。 
		特殊情况:数组中的值只有1个。 
		document.getElementsByTagName(“div”)[0];取数组中第一个元素 
		document.getElementsByClassName(“a”)[0];取数组中第一个元素

DOM访问关系(节点的获得)
节点的访问关系,是以属性的方式存在的,DOM的节点并不是孤立的,因此可以通过DOM节点之间的相对关系对他们进行访问

DOM节点操作(节点自身)

		createElement       创建元素节点
		createTextNode      创建文本节点

		appendChild()       				 追加孩子
		insertBefore(newNode,oldNode)        在指定节点前插入孩子   // 内部指定位置插入节点

		cloneNode  			复制节点
		removeChild			删除节点

		replaceChild        替换节点

DOM节点操作

	1 创建节点
	新的标签(节点)=document.creatElement(“标签名”);
	
	2 插入节点(使用节点)
	a、父节点.appendChild( ); 
	父节点.appendChild(新节点); 父节点的最后插入一个新节点
	b、父节点.insertBefore(要插入的节点,参考节点) 
	父节点.insertBefore(新节点,参考节点) 在参考节点前插入 
	如果参考节点为null,那么他将在节点最后插入一个节点
	
	.3 删除节点
	a、用法:用父节点删除子节点 
	父节点.removeChild(子节点); 必须指定要删除 的子节点 
	节点自己删除自己; 
	不知道父级的情况下,可以这么些:node.parentNode.removeChild(node)
	
	4 复制节点
	a、oldNode.cloneNode(true) 
	新节点=要复制的节点.cloneNode(参数); 参数可选复制节点 
	用于复制节点,接收一个布尔参数,true表示深复制(赋值节点及其所有子节点),false表示浅复制(复制节点本身,不复制子节点)
	
	5 属性、赋值获取两种方式
	
	a、元素节点.属性或者元素节点[属性]
	eleNode.src="image/jd2.png"
	console.log(eleNode.src);
	console.log(eleNode["title"]);
	1
	2
	3
	b、元素节点.方法( ); 
	①.获取: getAttribute(名称) 属性节点
	②.设置:setAttribute(名称,值)
	③.删除:removeAttribute(名称) 
	调用者:节点 有参数 没有返回值 每一个方法意义不同

示例代码:

	<body>
	<div id="box" value="111">你好</div>
	<script>
	var ele = document.getElementById("box");//元素节点
	var att = ele.getAttributeNode("id");//属性节点
	var txt = ele.firstChild;
	console.log(ele);  //<div id="box" value="111">你好</div>
	console.log(att); //id="box"
	console.log(txt); //"你好"

节点属性

节点对象的属性:
				childNodes
				firstChild
				lastChild
				parentNode
				previousSibling
				nextSibling

			节点属性:
				HTML        DOM

				src  		src
				title		title
				href		href
				action		action
				alt 		alt
				for         htmlFor
				class 		className
				
                onchange  内容改变
                textName.fous(); 获取焦点


			1.节点属性值的设置
				节点对象.属性名=;
				
			2.节点属性值的获取
				节点对象.属性名
				

举个例子:

代码如下:

<body>
	<img src="images/1.jpg" alt="" id="pic">
	<a href="#" id="lk">百度</a>
	<form action=""></form>
	<label for="uname">用户名:</label><input type="text" id="uname"><br>
	<label for="uname" id="tip">密码:</label><input type="password" id="pwd">

	<script type="text/javascript">
		var oImg=document.getElementById('pic');
		//节点属性
		oImg.src='images/3.jpg';
		oImg.alt='你好';


		var link=document.getElementById('lk');
		//设置
		link.href='http://www.baidu.com';

		var oT=document.getElementById('tip');
		oT.htmlFor='pwd';


	</script>
</body>

DHTML

createCaption      在表格中创建空的caption对象
createTHead        在表格中创建空的thead元素
insertCell         在表格行(tr)中创建新单元格,并将单元格添加到cells集合中
inserRow           在表格中创建新行(tr)

举例:
制作一个表格

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		table{width: 500px;border: 1px solid gray;border-collapse: collapse;}
		th,td{line-height: 35px;border: 1px solid gray;text-align: center;}
	</style>
</head>
<body>
	<script type="text/javascript">
		//1.创建表格
		var tab=document.createElement('table');
		//2.标题
		// var cap=tab.createCaption();	
		// cap.innerHTML='学生信息表';
		// console.log(cap);
		tab.createCaption().innerHTML='学生信息表';
		//3.thead
		var tHead=tab.createTHead();
		//4.表头
		var tr1=tHead.insertRow();
		//添加列
		tr1.insertCell().innerHTML='编号';
		tr1.insertCell().innerHTML='姓名';
		tr1.insertCell().innerHTML='年龄';
		tr1.insertCell().innerHTML='地址';
		//5.tbody
		var tbody=tab.createTBody();
		//添加行
		var tr0=tbody.insertRow();
		tr0.insertCell().innerHTML='1000';
		tr0.insertCell().innerHTML='Jack';
		tr0.insertCell().innerHTML='20';
		tr0.insertCell().innerHTML='瑞达路';


		//显示在页面中
		document.body.appendChild(tab);
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值