JavaScript操作DOM对象

265 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情 Document Object Model(文档对象模型) 由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。

DOM树:浏览器加载页面到内存时,会在内存中形成一个树状结构 我们html当中的所有的内容都是这个树上的一个节点 这个树就叫做dom树

整个文档就是一个文档节点 每个标签都是元素节点 包含再标签中文本时文本节点 属性就是属性节点 注释是注释节点

1.DOM(Document Object Model):文档对象模型

2.根据层次关系访问节点

(1)节点属性:

属性名称描述
parentNode返回节点的父节点
childNodes返回子节点集合,childNodes[i]
firstChild返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastChild返回节点的最后一个子节点
nextSibling下一个节点
previousSibling上一个节点

(2)element属性

属性名称描述
firstElementChild返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastElementChild返回节点的最后一个子节点
nextElementSibling下一个节点
previousElementSibling上一个节点

(3)示例

image.png

3.节点信息

nodeName:节点名称

nodeValue:节点值

nodeType:节点类型

节点类型NodeType值
元素element1
属性attr 2
文本text3
注释comments8
文档document9

4.操作节点

(1)操作节点的属性

语法:

getAttribute("属性名") 
setAttribute("属性名","属性值")

(2)创建和插入节点

创建节点:

名称描述
createElement( tagName)创建一个标签名为tagName的新元素节点
A.appendChild( B)把B节点追加至A节点的末尾
insertBefore( A,B )把A节点插入到B节点之前
cloneNode(boolean)复制(克隆)某个指定的节点

(3)删除和替换节点

名称描述
removeChild( node)删除指定元素的某个指定子节点
replaceChild( newNode, oldNode)属性attr 用其他的节点替换指定的节点

示例:

image.png

案例:操作当当购物车页面

<!DOCTYPE html> 
<html> 
<head lang="en">     
<meta charset="UTF-8">     
<title>操作当当购物车页面</title>     <link type="text/css" rel="stylesheet" href="css/cartStyleRemove.css" /> </head> 
<body>     
<div class="content">         
<div class="logo">             
<img src="image/dd_logo.jpg">
<span onclick="close_plan();">关闭</span>        
</div>         
<div class="cartList" id="cartList">             
<ul>                 
<li>商品图片</li>                 
<li>商品信息</li>                 
<li>单价</li>                 
<li>数量</li>                 
<li>总价</li>                 
<li>操作</li>             
</ul>             
<ul id="removeUlOne">                 
<li><img src="image/dog.jpg"></li>                 
<li>我和狗狗活下来了</li>                 
<li>¥<input type="text" name="price" value="21.90"></li>                 
<li><input type="button" name="minus" value="-" onclick="minus(0);"><input type="text" name="amount" value="1"><input type="button" name="plus" value="+" onclick="plus(0);"></li>
<li id="price0">¥21.90</li>                 
<li>                     
<p onclick="collection();">移入收藏</p>                     
<p onclick="delectOne()">删除</p>                 </li>             
</ul>             
<ul id="removeUlTow">                 
<li><img src="image/mai.jpg"></li>                 
<li>灰霾来了怎么办</li>                 
<li>¥<input type="text" name="price" value="24.00"></li>                 
<li><input type="button" name="minus" value="-" onclick="minus(1);"><input type="text" name="amount" value="1"><input type="button" name="plus" value="+" onclick="plus(1);"></li>                 
<li id="price1">¥24.00</li>                
<li>                     
<p onclick="collection();">移入收藏</p>                     
<p onclick="delectTow()">删除</p>                 
</li>             
</ul>             
<ol>                 
<li id="totalPrice">商品总计:<span></span></li>                
<li><span>结 算</span></li>             
</ol>         
div>     
</div>     
<script type="text/javascript " src="js/shoppingRemove.js ">
</script> 
</body> 
</html>

JS操作标签属性 JS操作标签的属性分为两种:一种是自带的属性,另一种是自定义的属性。有三种方式:

1、操作自带的属性,不能作用在自定义的属性上,和对象操作属性的方式一致

querySelector[‘src’] = ‘img/mg.jpg’; querySelector.title = ‘mg’;

body, ul, li, div, p, h1, h2, ol {    
margin0;    
padding0; }
body {   
margin5px 0 0 0 
} ul, li, ol { 
list-style: none; } 
.content {   
width680px; 
margin0 auto; 
font-family"微软雅黑"; 
border: solid 1px #cecece;  
padding5px; }
.logo {    
margin10px 0; } 
.logo span {  
display: inline-block;  
float: right;    
width60px;   
height30px;   
line-height30px; 
font-size14px; 
background#ff0000;  
color#ffffff;  
text-align: center; 
border-radius10px;  
margin-top5px;   
margin-right10px;   
cursor: pointer;    
font-weight: bold; } 
.cartList {    
overflow: hidden;
} .cartList ul {   
clear: both;   
width100%;   
overflow: hidden;
border-bottom1px #c6c6c6 dashed;  
padding-top6px; } 
.cartList ul li img {     width60px; } 
.cartList ul li {    
font-family"微软雅黑"; 
font-size12px;    
color#666666;    
text-align: center;    
line-height25px;
float: left; } 
.cartList ul li input[name="price"] {   
border: none;   
background: transparent;  
width45px;    
text-align: center; 
} 
.cartList ul li input[name="amount"] {  
width45px;   
text-align: center;  
border1px solid #999999;   
border-left: none;
border-right: none;    
height21px; } 
.cartList ul li input[name="minus"], 
.cartList ul li input[name="plus"] {  
height25px;     
border1px #999999 solid;
width25px;
text-align: center; } 
.cartList ul li:nth-of-type(1) {  
width130px; } 
.cartList ul li:nth-of-type(2) { 
width100px; } 
.cartList ul li:nth-of-type(3) {   
width130px; } 
.cartList ul li:nth-of-type(4) {   
width100px; }
.cartList ul li:nth-of-type(5) {  
width130px; } 
.cartList ul li p { 
cursor: pointer; }
.cartList ol {  
float: right;   
clear: both; } 
.cartList ol li { 
float: left;  
width200px; }
.cartList ol li:nth-of-type(1span { 
color#ff0000; } 
.cartList ol li:nth-of-type(2span {  
display: inline-block;  
float: right;   
width80px;    
height35px;    
line-height35px;   
font-size14px;   
font-family"微软雅黑"; 
background#ff0000;   
color#ffffff;    
text-align: center;
margin-top5px;   
margin-right15px;  
cursor: pointer;    
font-weight: bold; }

image.png

image.png

image.png

(4)操作节点样式

改变样式的属性:(1)style属性;

(2)className属性

style属性语法和示例:

HTML元素.style.样式属性="值"

document.getElementById("titles").style.color="#ff0000"; document.getElementById("titles").style.fontSize="25px ";

JS操作表单样式 1,操作style属性

querySelector.style.backgroundColor = ‘red’; querySelector.style.color=‘yellow’; 2,操作class属性

querySelector.className=‘c1’; ———————————————— 版权声明:本文为CSDN博主「爱喝椰汁的木木」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/qq_45503643…

名称描述
onclick当用户单击某个对象时调用事件
onmouseover鼠标移到某元素之上
onmouseout鼠标从某元素移开
onmousedown鼠标按钮被按下

className属性的语法和示例:

HTML元素.className="样式名称"

image.png 改变样式的属性运用示例:

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png 5)获取元素的样式

语法:

HTML元素.style.样式属性;

示例:

alert(document.getElementById("cartList").display);

语法:

document.defaultView.getComputedStyle(元素,null).属性;

示例:

var cartList=document.getElementById("cartList"); alert(document.defaultView.getComputedStyle(cartList,null).display);

语法:

HTML元素. currentStyle.样式属性;//currnetStyle:兼容IE浏览器

示例:

alert(document.getElementById("cartList").currentStyle.display);

题:课工场论坛列表(论坛贴吧发表:节点的综合应用)

image.png

image.png

image.png

image.png

image.png S操作表单元素 checked:表示复选框或者单选框的选中状态,在属性checked="checked"表示选中 与checked等价的

disabled:表示标签的可点击状态 ,disabled="disabled"表示不可用的

js操作这些属性的时候可以使用true false

//全局变量 var imgs = new Array("tou01.jpg", "tou02.jpg", "tou03.jpg", "tou04.jpg"); // 显示发帖div function showDiv() {     document.getElementById("showSubmit").style.display = "block"; } // 点击发布添加到内容li function publist() { // 获得随机头像的图片的数组下标      var index = Math.floor(Math.random() * 4);     // 创建li节点      var tvLi = document.createElement("li");     // 创建div节点     var tvDiv = document.createElement("div");     // 创建图片节点      var tvimage = document.createElement("img");     // 设置图片节点src属性      tvimage.setAttribute("src", "image/" + imgs[index]);    // div添加图片为子节点      tvDiv.appendChild(tvimage); // 创建h1标签节点 var tvh1 = document.createElement("h1"); // 取得发布div框里的标题的值填充到h1标签 var tvTitle = document.getElementById("title").value;     tvh1.innerText = tvTitle;      // 创建一个p标签节点     var tvP = document.createElement("p"); // 创建两个span标签节点    var tvSpanOne = document.createElement("span"); var tvSpanTow = document.createElement("span"); // 第一个span标签取填充div里的下拉列表框所选的值      var tvSelect = document.getElementById("section").value; tvSpanOne.innerText = "板块:" + tvSelect;    // 第二个span标签追加到p标签节点里    var date = new Date();      var str = date.getFullYear() + "/" + date.getMonth() + 1 + "/" + date.getDate() + "/" + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();     tvSpanTow.innerText = "时间是:" + str;      // 把两个sapn标签追加到p标签节点里    tvP.appendChild(tvSpanOne);    tvP.appendChild(tvSpanTow);    // 把div、h1、p标签追加到li里 tvLi.appendChild(tvDiv);     tvLi.appendChild(tvh1);     tvLi.appendChild(tvP);    // 把添加好的li再插入到ul标签节点里   var oldUl = document.getElementById("showContent"); // 把新添加的li节点插入到老的li节点之前 oldUl.insertBefore(tvLi, oldUl.firstChild);   // 清除div里填充过的内容,如标题和内容部分    document.getElementById("title").value = "";      document.getElementById("content").value = "";   // 设置发布div隐藏     document.getElementById("showSubmit").style.display = "none"; }