DOM相关知识

DOM操作,可以简单理解成“元素操作”。
我们在操作元素时,其实就是把这个元素看成一个对象,然后使用这个对象的属性和方法进行相关操作。
1、节点类型(DOM常见的三种节点类型)

节点类型node Type值
元素节点1
属性节点2
文本节点3

2、获取元素

getElementById(“id名”)通过id来选中元素
getElemenstByTagName(“标签名”)通过标签名选中元素 类数组
getElementByClassName(“类名”)通过class来选中元素
getElementsByClass(“name名”)用于表单元素 一般只用于单选按钮和和复选框
querySelector(“选择器”)选取满足条件的第一个
querySelectorAll(“选择器”)选取满足条件的所有元素 类数组

在这里插入图片描述

    <!-- getElementById() -->
    <div id="div1">JS</div>
    <script>
       let div1=document.getElementById('div1');
            div1.style.color="red";
    </script>
    <!-- getElemntByTagName() -->
      <p>JS</p>
       <script>
      let p=document.getElementsByTagName('p')[0];
      p.style.fontSize="20px";
       </script>


      <!-- getElemntByClassName() -->
      <ul id="list">
          <li>HTML</li>
          <li class="select">CSS</li>
          <li class="select">JS</li>
          <li>JQ</li>
      </ul>
   <script>
       let list=document.getElementById('list');
       let select=list.getElementsByClassName('select');
      for(var i=0;i<select.length;i++){
        select[i].style.color="yellow";
      }
     
   </script>

<!-- querySelector()和querySelectorAll() -->

<div>1</div>
<div>2</div>
<div class="test">3</div>
<div class="test">4</div>
<div>5</div>

<script>
let div2=document.querySelectorAll('.test');
for(let i=0;i<div2.length;i++){
    div2[i].style.color="skyblue";
}
// querySelector()
let div3=document.querySelector("div:nth-last-of-type(1)");
div3.style.color="green";
</script>

3、如何创建元素

创建元素
用creatElement()来创建一个元素节点 用creatTextNode()创建文本节点
<script>
let el=document.createElement("元素名");    //创建元素节点
let txt=document.createTextNode("文本内容");  //创建文本节点
el.appendChild(txt);    //把文本节点插入到元素中
e2.appendChild(el);    // 把组装好的元素插入到已经存在的元素中
</script>
<div>

</div>

<input type="text">
<input type="button" value="提交" onclick="jz()">
<script>
// 获取div元素节点
let div=document.querySelector('div');
div.style.width="200px";
div.style.height="100px";
div.style.border="1px solid red";
div.style.marginBottom="30px";
// 获取文本的内容
let input=document.querySelectorAll('input')[0];

// 当按钮按下去时
function jz(){
    // 获取输入的值
let inputnum=input.value;

// 创建元素
let p=document.createElement('p');
let pt=document.createTextNode(inputnum);
p.appendChild(pt);
div.appendChild(p);
// 当按钮按下去后 文本框的值 只能一次有效
input.value=" ";
div.style.overflowX="auto";
}
</script>

4、插入元素

/* 插入元素
appendChild()是把一个新元素插入到父元素的内部子元素的末尾
书写格式:A.appendChild(B);
A表示父元素 B代表动态创建好的新元素*/
<ul id="list">
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<input type="text">
<input type="button" value="提交" onclick="on()">
<script>
let list1=document.getElementById('list');
let input=document.querySelectorAll('input')[0];
function on(){
    // 创建一个li
    let li=document.createElement('li');
    let lit=document.createTextNode(input.value);
    li.appendChild(lit);
    list1.appendChild(li);
}
</script>

/* 插入元素
inserBefore()是把一个新元素插入到父元素中的某一个子元素之前
书写格式:A.inserBefore(B,ref);
A表示父元素 B表示新子元素 ref指定子元素
*/
<ul id="list">
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<input type="text">
<input type="button" value="提交" onclick="on()">
<script>
let list1=document.getElementById('list');
let input=document.querySelectorAll('input')[0];
function on(){
    // 创建一个li
    let li=document.createElement('li');
    let lit=document.createTextNode(input.value);
    li.appendChild(lit);
    list1.insertBefore(li,list1.firstElementChild);
}
</script>

5、删除元素

/* 插入元素
removeChild()方法来删除父元素下的某个子元素  firstElementChild(第一个)  lastElementChild(最后第一个)    
书写格式:A.removeChild(B)
A表示父元素 B表示父元素中的某个子元素*/
<ul id="list">
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<input type="button" value="删除" onclick="on()">
<script>
let list=document.getElementById('list');
let input=document.getElementsByTagName('input')[0];
function on(){
list.removeChild(list.lastElementChild);
}
 //删除整个列表  document.body.removeChild(list); 
</script>

5、复制(克隆)元素

<ul id="list">
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<input type="button" value="复制" onclick="on()">
<script>
let list=document.getElementById('list');
let input=document.getElementsByTagName('input')[0];
let li=list.querySelector('li:nth-child(2)');
console.log(li);
function on(){
    /*
      clonNode()方法来实现复制元素
      obj.clonNode(bool);
      bool是一个布尔值
      1或true:表示复制元素以及复制该元素下的所有子元素
      0或false:表示仅仅复制元素本身,不复制该元素下的子元素
    */
   // list.appendChild(li.cloneNode(1)); 克隆一个CSS
     document.body.appendChild(list.cloneNode(1));//克隆整个列表
}
</script>

6、替换元素

<p>JavaScript</p>
<hr>
输入标签:<input id="tag" type="text">
<br/>
输入内容:<input id="txt" type="text">
<br/>
<input id="btn" type="button" value="替换">
<script>
/* 
replaceChild()方法来实现替换元素
A.replaceChild(new,old);
A表示父元素、new 表示新子元素、old表示旧子元素
*/
let btn=document.getElementById('btn');
btn.onclick=function(){
   let p=document.querySelector('p');
   let tag=document.getElementById('tag');
   let txt=document.getElementById('txt');
    // 创建新节点
let span=document.createElement('span');
let spant=document.createTextNode(txt.value);
span.appendChild(spant);
document.body.replaceChild(span,p);
// 清空输入内容
txt.value=" ";
}
</script>
    <!-- getAttribute获取元素的某个值 -->
    <input type="button" value="获取" id="btn">
<button data="JavaScript">插入</button>
<script>
let input=document.getElementsByTagName('input')[0];
input.onclick=function(){
   alert(input.getAttribute('id'));
}
let button=document.getElementsByTagName('button')[0];
button.onclick=function(){
  alert(button.getAttribute("data"));
}
</script> 
 <!-- setAttribute设置元素的某个值 有这个属性名就覆盖属性值 没有属性名或值 就添加 属性名和属性值 -->

     <button name="f76">我是按钮</button>
<script>
let button=document.querySelector('button');
  button.onclick=function(){
     button.setAttribute("name","zhangxu");
  }

</script> 
  <!-- removeAttibute() 删除某个属性-->

    <div class="main">
        未到结局,焉知生死。
    </div>
    <script>
        let div = document.getElementsByTagName('div')[0];
        div.onclick = function () {

            div.removeAttribute("class");

        }
    </script> 
  <style>
        .main {
            height: 100px;
            width: 100px;
            background-color: red;
        }
    </style>

<p>煎和熬都是变成美味的方法,加油也是</p>
<input type="button" value="添加样式" id="add">
<input type="button" value="修改样式" id="re">
<script>
let p=document.getElementsByTagName('p')[0];
let input=document.getElementById('add');
let input1=document.getElementById('re');
// 添加class
input.onclick=function(){
    p.className="main";
}
// 删除class
input1.onclick=function(){
    // p.removeAttribute('class'); 等同于p.className="";
    p.className="";
}
</script> 
  <style>
        .main {
            height: 100px;
            width: 100px;
            background-color: red;
        }
    </style>
<!-- hasAttribute() 用来判断元素是否含有某个属性 
书写格式:
        obj.hasAttribute("attr");
    这个方法会返回一个布尔值 包含该属性就返回true 反则就放回false
-->
 <p class="main">煎和熬都是变成美味的方法,加油也是</p>
<input type="button" value="添加样式" id="add">
<input type="button" value="修改样式" id="re">
<script>
let p=document.getElementsByTagName('p')[0];
if(p.hasAttribute("class")){
    alert('存在!!!');
}
else{
    alert('不存在!!!');
}
</script> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值