JavaScript DOM

什么是DOM

DOM是Document Object Model的简写,即文档对象模型。
DOM用于XHTML、XML文档的应用程序接口(API)。
DOM提供一种结构化的文档描述方式,从而使HTML内容使用结构化的方式显示。
DOM由系列对象组成,是访问、检索、修改XHTML文档内容与结构的标准方法。
DOM标准是由w3c制定与维护。DOM是跨平台与跨语言的。
DOM的顶层是document对象

DOM节点分类node

 <a href="链接地址">我的链接</a>
元素节点 element node  <a href="链接地址">我的链接</a>
属性节点 attribute node  href="链接地址"
文本节点 text node  链接地址  我的链接

DOM操作的内容

1、操作元素的属性
2、操作元素的内容
3、操作元素的样式css
4、获得元素节点对象
5、操作元素的节点对象

DOM直接获得元素对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>	
		<script type="text/javascript">	
			function  demo1(){
				
				//*通过ID名称获得节点元素对象----单个对象
				var span =window.document.getElementById("span_1");
				alert(span);	
			}
		  function  demo2(){
		  	  
		  	   //*通过标签的名称获得元素对象----多个对象
		  	   var spans=window.document.getElementsByTagName("span");
		  	   //获得具体的某一个
		  	   alert(spans[1]);
		  }
			
		 function  demo3(){ 	
		 	 //*通过class的名称获得元素对象----多个对象
		 	  var  spans=document.getElementsByClassName("sp");
		 	  
		 	  //不是所有的标签都是具有name属性的 所以这种获得方式不是太多
		 	  //通过name属性获得元素对象----多个对象
		 	  var inp=document.getElementsByName("inp");
		 	  
		 	  alert(spans);	
		 }
		</script>
	</head>
	<body>
		
<input type="button" name="inp" id="" value="ID获得元素对象" onclick="demo1()" />		
<input type="button" name="inp" id="" value="TagName获得元素对象" onclick="demo2()" />		
<input type="button" name="" id="" value="Class获得元素对象" onclick="demo3()" />
<hr/>
        <span id="span_1">bjsxt</span>
		
		<span>bjsxt</span>
		
		<span class="sp" >bjsxt</span>
		
		<span class="sp">bjsxt</span>		
	</body>
</html>

DOM间接获得元素对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>DOM间接获得元素对象的方式</title>
		
		<script type="text/javascript">
			
         function  demo1(){		
				//获得div对象
				
				var div=document.getElementById("div1");
				//获得div下面的所有子元素--text文本也是一个节点
				var ch= div.childNodes;		
				//alert(ch.length);
				//document.getElementsByTagName("span")
				
				//获得div下面的所有的span对象
				var sp= div.getElementsByTagName("span");			
				console.log(sp);
			}	
			function  demo2(){
				//获得span对象
				var  span=document.getElementById("sp1");
				//获得父节点
				var pa= span.parentNode;		
				//console.log(pa);		
				alert(pa);
			}	
			function  demo3(){		
				//获得span对象
				var sp= document.getElementById("sp1");		
				//获得span对象的上一个元素 
				//#text
				var  pr= sp.previousSibling;
				// 上一个span对象
				var pr2=sp.previousElementSibling;
				//获得下一个元素
				// #text
				var ne= sp.nextSibling;
				//下一个span元素对象
				var ne2=sp.nextElementSibling;	
				console.log(pr2);	
			}
			
		</script>
	</head>
	<body>
		
<input type="button" name="" id="" value="获得子元素" onclick="demo1()" />
<input type="button" name="" id="" value="获得父元素" onclick="demo2()" />
<input type="button" name="" id="" value="获得兄弟元素" onclick="demo3()" />
<hr />
<div id="div1">
			
			<span>bjsxt</span>		
			<span id="sp1">bjsxt</span>	
			<span>bjsxt</span>	
			<span>bjsxt</span>	
		</div>		
		<span>bjsxtsxt</span>		
	</body>
</html>

JavaScript中操作元素
1.DOM操作元素的属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			
			function  demo1(){
				
			//获得元素对象
			var inp=document.getElementById("zh");
				
			//获得对象的属性  inp.value:获得的是实时输入的值不是默认的值
				console.log(inp.type+"---"+inp.name+"---"+inp.value);
				//操作元素对象的属性	
				inp.type="button";
	inp.value="测试1";
			}
		</script>	
	</head>
	<body>
		
<input type="button" name="" id="" value="操作元素的属性" onclick="demo1()" />
<hr />
<input type="text" name="zh" id="zh" value="123" />
</body>
</html>

2.DOM操作元素内容

获得元素内容
单标签获得值得时候使用value属性
双标签获得时候使用的是innerHTML 或者innerText
双标签的特殊情况(value)
Select textarea
取值的时候使用value属性
赋值的时候使用innerHTML或者innerTest即可

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>	
		<script type="text/javascript">
			function  demo1(){
				//获得div的对象
				var div =document.getElementById("div1");
				
				//  文本和HTML的标签
				var inn=div.innerHTML;
				console.log(inn);
				
				//输出的是纯文本
				var  inn2=div.innerText;
			    console.log(inn2);
			    
				//操作内容  可以识别HTML标签的
				//div.innerHTML="<b>嘿嘿</b>";
				
				//把内容当作纯文本输出
				div.innerText+="<b>嘿嘿</b>";
			}
			
			function  ch(th){
				alert(th.value);
			}
			function  test(){
				//获得多行文本的对象
				var te=document.getElementById("te");
				//取值问题
				alert(te.value);
				//赋值操作
				te.innerHTML="sxt";
			}
		</script>
		
	</head>
	<body>
		
<input type="button" name="" id="" value="元素内容测试"  onclick="test()"/>
<hr />
<div id="div1">
<span>人到中年不由己,保温杯里泡枸杞</span>
</div>
<!-- this:代表当前选择的对象-->
		<select onchange="ch(this)">	
			<option value="1">水果1</option>
<option value="2">水果2</option>
<option value="3">水果3</option>
		</select>
		<textarea id="te" ></textarea>
	</body>
</html>

3.DOM操作元素样式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			function  demo1(){
				
				//获得div元素对象
				var  div =document.getElementById("div1");
				//获得元素的css样式--行内样式才可以获得
				var  wi= div.style.width;
				var he =div.style.height;
								
  				//[1]操作元素的css样式  第一种 ---使用于指定css样式比较少的情况
				/*div.style.width="300px";
				
				div.style.height="300px";
				
				div.style.backgroundColor="darkgoldenrod";*/
				
				//[2]通过增加class属性的方式操作css---如果这个css样式在多个地方重复使用
				
				div.className="divv";	
			}
		</script>

		<style>
			/*#div1{
				
				width: 200px;
				
				height: 200px;
				
				border: 2px solid red; 
				
			}*/
			
			.divv{
			  width: 500px;
			  height: 500px;
			  background-color: royalblue;
			}
		</style>
	</head>
	<body>
		
	<input type="button" name="" id="" value="操作节点的css样式" onclick="demo1()" />
	<hr />
    <div id="div1" class="divv" style="width: 200px; height: 200px; border: 2px solid red;">	
    </div></body></html>

4.DOM操作元素节点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			function insert(){
				//创建节点对象
				var p=document.createElement("p");
				p.innerHTML="照片:"
				//创建input标签对象	
				var inp=document.createElement("input");
				//给指定的对象赋予属性
				inp.type="file";
				var inp2=document.createElement("input");
				inp2.type="button";
				inp2.value="删除";
				//给指定的对象赋予事件
				inp2.onclick=function(){		
				//删除节点对象  移除子节点对象
				/*p.removeChild(inp);
					
				p.removeChild(inp2);	
				
				document.body.removeChild(p);*/
				
				//直接删除p标签对象
				p.remove();
					
				}
				//获得body对象
				//在现有元素之后追加节点对象
				/*document.body.appendChild(p);*/
				//获得p标签对象
				var p1=document.getElementById("p_1");
				//在现有元素对象之前增加新的节点对象
				document.body.insertBefore(p,p1);
				p.appendChild(inp);
				p.appendChild(inp2);
			}
		</script>
	</head>
	<body>	
		<p>
			姓名:<input type="" name="" id="" value="" />
		</p>
		<p>
	
			照片:<input type="file" name="" id="" value="" />
			
			<input type="button" name="" id="" value="添加" onclick="insert()"/>
			
		</p>
		<p id="p_1">
			
			<input type="button" name="" id="" value="提交" />
			<input type="button" name="" id="" value="清空" />
		</p>
		
	</body>
</html>

<!--
	操作元素节点对象的方法:
	
	[1]创建节点对象:
	  
		var p=document.createElement("p");
		
    [2]如何追加到指定节点对象中		
	    p.appendChild(inp);
	    
	    document.body.insertBefore(p,p1);
	    
	[3]移除子节点:
        p.removeChild(inp);
        
       直接移除该节点  
	    
	    p.remove();
	
-->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AloneDrifters

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值