DOM解析HTML

<!--*DOM  文档对象模型
	*Document Object Model
	*文档:标记型文当(html/xml)
	*对象:封装了属性和行为的实例
	*模型:共性特征的体现
	
	*DOM解析HTML
		*通过DOM的方法,把HTML全部(元素[标签],文本,属性)都封装成了对象
			*<span id="spanId">文本</span>
		*DOM想要操作标记型文档,必须要先解析(解析器)
			*DOM解析HTML(浏览器可以解析HTML,所以不用我们再创建解析器)
		*浏览器通过DOM解析HTML?
			*树只有一个根节点
			 没有子节点的节点交树叶
			 没有父节点的节点是根节点
			 每个节点只有一个父节点,可以有多个子节点
			 树的高度:层级
			*Document:代表整个文档,即整个树
			 Element:元素(标签)对像
			 Attribute:属性对象
			 Te=xt:文本对象
			 Node:节点对象,是以上对象的父类
		*DOM的三个级别
			*level1:将HTML文档封装成对象
			*level2:在level1的基础上添加了新的功能,对时间和CSS样式的支持
			*level3:支持xml1.0德系新特性
		*DHTML不是一种编程语言
			*HTML:封装数据,通过各种标签。eg:<span>被封装的数据</span>
			*CSS:设置样式(显示效果)
			*DOM:操作HTML(解析HTML)
			*JS:提供逻辑(判断,循环语句)
		*Document:代表整个文档
			*方法:
				getElementById("id值"):(经常使用)通过元素的id的属性获取元素的兑现
				getElementsByName("name属性值"):通过名称获取元素对象的集合(返回的是数组)
				getElementsByTagName("标签的名称"):通过标签名称来获取对象的集合(返回的是一个数组)
				
				write("文本的内容(HTML标签)"):把文本的内容写到浏览器上
				*练习:在ul无序列表下,添加一个子节点。
					*步骤:创建元素对象<li>深圳</li>
						   document.createElemnt
						   创建文本对象  深圳
						   document.createTextNode
						   把深圳添加到li的下面,作为li的子节点
						   li.appendChild(text)
						   把li添加到ul下面,作为ul的子节点
						   ul.appendChild(li) 
		*Element对象
			*获取元素对象
				*getAttribute("属性名称"):获取属性值
				*setAttribute("属性名称","属性的值"):设置或者修改属性的值
				*removeAttribute("属性名称"):删除属性
			
				*获取元素下的所有子节点(**************)
					*Element.getElementsByTagName
					
		*Node:节点对象
			*nodeName:节点名称
			*nodeType:节点类型
			*nodeValue:节点值
				 
			//此时不能获取span标签里面的文本
			<span>文本</span>
							元素                属性            文本	
			nodeName        大写的标签名        属性名称        #text
			nodeType        1                   2               3
			nodeValue       null                属性的值        文本的内容
			
			*parentNode:获取父节点(返回的永远是一个元素节点),用子节点的对象去调用
			*childNodes:获取所有子节点
			*firstChild:第一个子节点
			*lastChild:最后一个子节点
			*nextSibling:上一个兄弟节点
			
			*如果通过ul获取北京子节点,使用ul.firstElementChild
				*如果使用的是IE6-8,使用ul。firstChild
			<span id="spanId">文本</span>
			*使用span的标签获取span中间的文本内容,需要使用firstChild(不管是什么浏览器)
		
			*方法:
				*hasChildNodes():检查是否包含子节点
				*hasAttributes():检查是否包含属性
				
				*appendChild(node):父节点调用,在末尾添加子节点
				*insertBefore(new,old):在指定节点之前添加子节点
				*replaceChild(new,old):替换节点,父节点调用
				*removeChild("node"):删除节点,父节点调用
				*cloneNode(boolean):复制节点,不是父节点调用
					*true:复制子节点,即可以复制里面包含的内容
					*false:不复制子节点,默认值
					*谁想复制,谁就去调用。

		*innerHTML:获取和设置文本内容
			*
		*事件
			*onclick  点击事件
			*onload   加载事件
			*onfocus  获取焦点事件
			*onblur   失去焦点事件
		
		*全选/全不选/反选练习
			<input type="checkbox" />
			*默认值,checked,选中
-->
<html>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<body>
				<h3>全选/全不选/反选练习</h3>
				<h4>全选</h4>
				<input type="checkbox" id="boxid" οnclick="selectAllOrNone()"/>全选/全不选</br>
				<input type="checkbox" name="hobby"/>篮球</br>
				<input type="checkbox" name="hobby"/>足球</br>
				<input type="checkbox" name="hobby"/>排球</br>
				<input type="checkbox" name="hobby"/>冰球</br>
				<input type="button" value="全选" οnclick="selectAll()"/>
				<input type="button" value="全不选" οnclick="selectNone()">
				<input type="button" value="反选" οnclick="selectOpposite()">
				<hr/>
				<ul id="ulId">	
					<li>北京</li>
					<li id="sh">上海</li>
					<li>广州</li>
				</ul>
				<ul>
					<li>小时代1</li>
					<li id="sd1">小时代2</li>
					<li>小时代3</li>
				</ul>
				<input type="text" id="id" value="zhangsan"/>
				
				<span id="spanId">我是span的区域</span>
				<hr/>
				<button id="buttonId">   
					我是按钮
				</button>
				<span id="spanId1">span区域</span>
				<span id="spanId2"></span>
				
				<hr/>
				<h3>获取焦点事件</h3>
				输入姓名:<input type="text" name="username" οnfοcus="focus()" οnblur="losefocus()"/><span id="uspan"></span></br>
				输入密码:<input type="password" name="password"/><span id="uspan"></span>
				
				
</body>
				<script type="text/javascript">
				/*
				思路:
				全选:获取名称是hobby的所有input标签
					  循环遍历,为了拿到每一个input标签,同时,设置checked
				*/
				function selectAll()
				{
					//获取名称是hobby的所有input标签
					var hobbys=document.getElementsByName("hobby");					
					for(var i=0;i<hobbys.length;i++)
					{
						//循环遍历,为了拿到每一个input标签
						var hobby=hobbys[i];
						//设置checked
						//推荐使用,只操作内存中的对象
						hobby.checked=true;
						//这个方法会在标签上面加上那个属性,而且只要有那个属性,就会选中,不论后面的值设置的是null或者其他
						//hobby.setAttribute("checked","checked");
					}
				}
				//全不选
				function selectNone()
				{	
					var hobbys=document.getElementsByName("hobby");					
					for(var i=0;i<hobbys.length;i++)
					{
						var hobby=hobbys[i];
						hobby.checked=false;
						//如果上面使用的是setAttribute下面setAttributefalse就没用,必须要使用removeAttribute("checked")才能生效						
					}
				}
				
				//反选
				function selectOpposite()
				{
					var hobbys=document.getElementsByName("hobby");					
					for(var i=0;i<hobbys.length;i++)
					{
						var hobby=hobbys[i];
						//判断当前标签的checked的值是否为true,为true就取消选中
						if(hobby.checked==true)
						{
							hobby.checked=false;
						}
						//否则就选中
						else
						{
							hobby.checked=true;
						}
						//简单操作
						//hobby.checked=!hobby.checked;
					}
				}
				
				function selectAllOrNone()
				{
					var box=document.getElementById("boxid");
					if(box.checked==true)
					{
						selectAll();
					}
					else
					{
						selectNone();
					}
				}
				
				
				//================================================================
				//var input=document.getElementById("id");
				//alert(input.value);
				//alert(input.getAttribute("value"));
				//input.setAttribute("value","zhaosi");
				//alert(input.getAttribute("value"));
				//input.removeAttribute("value");
				//alert(input.getAttribute("value"));
				
				//=========================================================
				//var ul=document.getElementById("ulId");
				//之前写成方法去了,没跳出来,其实是属性
				//var lis=ul.childNodes;
				//alert(lis.length);
				//此处的长度包含空格的个数
				//var li=ul.getElementsByTagName("li");
				//alert(li.length);
				//用元素节点调用getElementsByTagName方法,获取到的就是下面所有子节点
				
				//=========================================================
				
				//创建元素对象
				//var li=document.createElement("li");
				//创建文本对象
				//var text=document.createTextNode("深圳");
				//把文本对象添加到元素对象下面,作为子节点
				//li.appendChild(text);
				//获取ul
				//var uls=document.getElementsByTagName("ul")[0];
				//把元素对象添加到ul下面,作为子节点
				//uls.appendChild(li);
				
				//===========================================================
				//获得标签的对象
				//var input=document.getElementById("id");
				//alert(input.nodeName);INPUT
				//alert(input.nodeType);1
				//alert(input.nodeValue);null
				
				//获得属性的对象
				//var attr=input.getAttributeNode("type");
				//alert(attr.nodeName);type
				//alert(attr.nodeType);2
				//alert(attr.nodeValue);text
				
				//获得文本内容
				//var span=document.getElementById("spanId");
				//var spantext=span.firstChild;
				//alert(spantext.nodeName);#text
				//alert(spantext.nodeType);3
				//alert(spantext.nodeValue);我是span的区域
				
				//var ul=document.getElementById("ulId");
				//var li=ul.firstElementChild;
				//alert(li.nodeType);
				//alert(ul.hasChildNodes());
				//alert(ul.hasAttributes());
				
				//点击上海,用小时代2替换上海
				//function run()
				//{
				//	alert("heheh");
				//}
				//document.getElementById("sh").onclick = function()
				//{
					//var sh=document.getElementById("sh");
					//var xsd2=document.getElementById("sd1");
					//var ul=sh.parentNode;
					//ul.replaceChild(xsd2,sh);
					
					//this关键字,代表当前对象
					//var ul=this.parentNode;
					//var xsd2=document.getElementById("sd1");
					//ul.replaceChild(xsd2,this);
					
					//删除节点
					//this.parentNode.removeChild(this);
					//var sh=document.getElementById("sh");
					//var ul=sh.parentNode;
					//ul.removeChild(sh);
				//};
				
				//复制button按钮,添加到span标签中间。
				//var btn=document.getElementById("buttonId");
				//var newBtn=btn.cloneNode(true);
				//var span=documents.getElementById("spanId1");
				//span.appendChild(newBtn);
				
				//var span=document.getElementById("spanId1");
				//alert(span.innerHTML);
				//var span2=document.getElementById("spanId2");
				//span2.innerHTML="<font color='red'>span2</font>";
				
				//焦点=============================================================
				//提示输入的信息
				//function focus()
				//{
				//此处的获取焦点之后一直不能显示,未找到错误原因
				//	var userspan=document.getElementById("uspan");
				//	userspan.innerHTML="您只能输入特殊字符";
				//}
				//function losefocus()
				//{
					//获取用户输入的姓名
					//把用户输入的数据传入到后台,在后台做匹配操作,后台处理完成,返回结果。
				//	var userspan=document.getElementById("uspan");
				//	userspan.innerHTML="用户名已存在";
				//}
				
				//全选==============================================================
				</script>
</html>				
		
记事本里面的笔记腾过来就没有格式了,奇怪了,只有放在代码里面了。				
其实前端的方法都不是很难,但是因为太多了,所以用得不输,多练练就好了。				

				
				
				
				
				
				
				
				
				
				

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值