码迷,mamicode.com
首页 > 其他好文 > 详细

dom操作

时间:2018-04-06 21:21:01      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:ons   off   classname   script   doc   ntb   bsp   rem   sel   

一. 操作dom节点元素

1. 属性获取节点元素

 (1)firstChild和firstElementChild、lastChild和firstElementChild、nextSibling和nextElementSibling、childNodes和children。

        firstChild是子代第一个节点(包含文本节点), firstElementChild是子代第一个元素;lastChild是子代最后一个节点(包含文本节点), lastElementChild

       子代最后一个元素;childNodes获取所有的子代节点(包含文本节点),children获取所有的子代元素。

<body>
  <div id="node">节点<span>元素</span></div>
节点
<div>元素</div>
</body>

//child和elementChild
区别证明
<script>
  (function() {
var node = document.getElementById(‘node‘);
console.log(node.firstChild) //"node"
console.log(node.firstElementChild) //<span>元素</span>
})()
</script>

//childNodes和children区别
<scirpt>
  (function(){
    var node = document.getElementById("node");
console.log(node.childNodes);//["节点", "<div>元素</div>"]
console.log(node.children);//["<div>元素</div>"]
})()
</script>

 (2)parentnode和parentElement/offsetParent

  • offsetParent是位置上的父级元素,parentElement是父级元素,parentNode是父级节点元素。
  • 三者在很大程度上是可以划等号的,但是也有特殊情况,如下:
console.log(document.body.offsetParent)//null
console.log(document.body.parentElement) //html
console.log(document.body.parentElement.parentElement) //null
console.log(document.body.parentNode.parentNode); //document

offsetParent最高层是body, parentElement最高层是html,parentNode最高层是document。从一个角度说明,在一个document中,从位置上来说,最高层是body;从元素上来说,始祖元素是html;从节点上来说,document是起始点。

   (3) closest 获取祖先级元素

<body id="wrapper">
  <div id="inner">
    <input type="button" value="点击" id="clibtn"/>
</div>
</body>
<script>
  (function(){
var cliBtn = document.getElementById("clibtn");
cliBtn.onclick = function() {
console.log(this.closest("#inner")) //<div id="inner"></div>
console.log(this.closest("#wrapper")) //<body id="wrapper"></body>
}
})()
</script>

2.方法获取元素节点

  getElementById、getElementByClassName、getElementByTagName、querySelector、querySelectorAll。

<body>
  <div id="wrapper">
    <ul class="list">
      <li class="item"></li>
<li class="item"></li>
<li class="item list"></li>
</ul>
</div>
</body>
<sctipt>
var wrapper = document.getElementById("wrapper");
var liList = document.getElementByTagName("li");
var itemList = document.getElementByClassName("item");
var list = document.querySelector(".list") //<ul class="list">...</ul>
var list = document.querySelectorAll("list") //[ul.list, li.list]
</script>

 3. 删除dom元素

    remove() 和 removeChild()

<body>
  <div id="wrapper">
    <span id="inner">11111</span>
</div>
</body>
<script>
  var wrapper = document.getElementById("wrappper");
var inner = document.getElementById("inner");
wrapper.removeChild(inner); //删除子代元素span
wrapper.remove() //删除自身
</script>

4. 取代元素

<body>
  <div id="wrapper">
<span id="inner">内部</span>
</div>
</body>
<script>
  var wrapper = document.getElementById("wrapper");
var inner = document.getElemrntById("inner");
var newEle = document.createElement("em");
newEle.innerHTML = ‘我们的承诺‘;
wrapper.replaceChild(newEle, inner); // inner将被新创建的em元素替换
</script>

5. 创建元素

createElement和createText

<body>
  <div id="wrapper">
      <span id="inner">内部</span>
   </div>
</body>
<script>
  var wrapper = document.getElementById("wrapper");
   var inner = document.getElemrntById("inner");
   var newEle = document.createElement("em"); //创建元素节点
var textNode = document.createTextNode("我们的承诺");//创建文本节点 newEle.innerHTML
= textNode; wrapper.replaceChild(newEle, inner); // inner将被新创建的em元素替换 </script>

6.元素插入

<body>
  <div id="wrapper">
      <span id="inner">内部</span>
   </div>
</body>
<script>
  var wrapper = document.getElementById("wrapper");
   var inner = document.getElemrntById("inner");
   var newEle = document.createElement("em");
   newEle.innerHTML = 我们的承诺;
   inner.innerBefore(newEle); // inner前面插入新元素
wrapper.appendChild(newEle); 在wrapper最后子代元素后面添加新元素
wrapper.insertAdjacentElement(newEle); </script>

 

二、操作dom的属性

1. 获取属性

<body>
  <div id="wrapper" class="class-wrapper">
    <div id="inner">
       操作dom属性的方法
</div>
</div>
</body>
<script>
  var wrapper = document.getElementById("wrapper");
wrapper.getAttribute("class"); //class-wrapper
wrapper.getAttributeNode("class"); //class="class-wrapper"
wrapper.getAttributeName() //["id", "class"]
</script>

2. 删除属性值

<body>
  <div id="wrapper" class="class-wrapper">
    <div id="inner">
      删除DOM属性
</div>
</div>
</body>
<script>
  var wrapper = doucment.getElementById("wrapper");
wrapper.removeAttribute("class");
wrapper.removeAttributeNode("class");
</script>

 3.设置属性值

<body>
  <div id="wrapper" class="class-wrapper">
    设置属性值
</div> </body>
<script>
  var wrapper = document.getElementById("wrapper");
wrapper.setAttribute(‘name‘, ‘attributeName‘)
</script>

 

dom操作

标签:ons   off   classname   script   doc   ntb   bsp   rem   sel   

原文地址:https://www.cnblogs.com/lidaylin/p/8604883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!