一般 节点至少拥有nodeType(节点类型).nodeName(节点名称)和nodeValue(节点值)这三个基本属性

  • 元素节点 nodeType 为 1
  • 属性节点 nodeType 为 2
  • 文本节点 nodeType 为 3(文本节点包含文字、空格、换行等)
  • 开发中 节点操作主要操作的是元素节点

父节点 parentNode

获得里元素最近的父级节点

<body><div class="nav"><div class="jiedian">节点操作</div></div><script>var jiedian  = document.querySelector('.jiedian')console.log(jiedian.parentNode);</script>
</body>

子节点 children

  • 获取所有元素的子元素节点
      <div><ul><li></li><li></li><li></li></ul><ol><li></li><li></li><li></li></ol></div>// 获取子节点var ul = document.querySelector('ul')var lis =ul.querySelectorAll('li') console.log(lis);// 简单方法 children 获取所有元素的子元素节点console.log(ul.children);

获取第一个和最后一个子元素节点

  • firstElementChild 返回第一个子元素节点 兼容性IE9 才支持
  • lastElementChild 返回最后一个子元素节点 兼容性IE9 才支持
  • element.children[0] 返回第一个子元素节点 不考虑兼容问题
  • element.children.length - 1 返回最后一个子元素节点 不考虑兼容问题
          <div><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul></div>
// 获取第一个和最后一个子元素节点console.log(ul.children[0]);console.log(ul.children[ul.children.length - 1 ]);// firstElementChild 返回第一个子元素节点 兼容性IE9  才支持console.log(ul.firstElementChild);console.log(ul.lastElementChild);

下拉菜单案例

css不展示了
js 代码

<script>var nava = document.querySelector('.nava') //获取元素console.log(nava); //打印检查var lis = nava.children; // 获取ul下li 的元素console.log(lis);    //打印检查for (var i = 0;i <lis.length;i++){   //循环lis[i].onmouseover = function(){   // onmouseover鼠标经过this.children[1].style.display = 'block'}lis[i].onmouseout = function(){ // onmouseout 鼠标离开this.children[1].style.display = 'none'}}</script>

起始状态

鼠标经过时

兄弟节点

  • 元素.nextElementSibling 返回当前元素下一个兄弟节点 找不到返回null 有兼容问题 IE9 以上才支持
  • 元素.previousElementSibling 返回当前元素上一次兄弟节点 找不到返回 null 有兼容问题 IE9 以上才支持
  • nextSibling 返回当前元素下一个兄弟节点 是包含了所有元素节点 包括换行文本节点
  • previousSibling 返回当前元素上一个兄弟节点 是包含了所有元素节点 包括换行文本节点
<body><div>(● ̄(エ) ̄●)</div><span>弟</span><script>var div= document.querySelector('div')
// div.nextElementSibling 返回当前元素下一个兄弟节点 找不到返回null 有兼容问题 IE9 以上才支持console.log(div.nextElementSibling);// 返回当前元素上一次兄弟节点 找不到返回 null  有兼容问题 IE9 以上才支持console.log(div.previousElementSibling);// nextSibling 返回当前元素下一个兄弟节点 是包含了所有元素节点 包括换行文本节点 console.log(div.nextSibling);// previousSibling  返回当前元素上一个兄弟节点 是包含了所有元素节点 包括换行文本节点console.log(div.previousSibling);</script>
</body>

创建节点 添加节点

document.createElement('tagName) 方法创建 由tagName 指定的HTML元素 因为这些元素原先不存在 是根据需求动态生成的 所以也称为 动态创建元素节点

  • 创建节点元素节点 createElement
  • 添加节点 appendChild 将一个节点添加到指定父节点列表的末尾
<body><ul><li>111</li></ul><script>var ul = document.querySelector('ul') // 先获取元素// 创建节点元素节点  createElementvar li = document.createElement('li')console.log(li);// 添加节点  appendChild ul.appendChild(li)// 创建节点  .createElementvar lis = document.createElement('li')// 添加节点 指定元素 是在ul 第一个子元素 里的第一节点前添加ul.insertBefore(lis,ul.children[0])// 先创建节点 在添加节点</script>
</body>

简单 练习 发布留言板

<body><textarea name="" id=""> 123</textarea> <button>发布</button><ul></ul>
<script>var text = document.querySelector('textarea')var but = document.querySelector('button')var ul = document.querySelector('ul')but.onclick = function(){    //点击事件if( text.value == ''){alert('请输入内容')return false;}else{// 创建元素var li = document.createElement('li')li.innerHTML = text.value// 添加元素// ul.appendChild(li);ul.insertBefore(li,ul.children[0]) // 最新元素总在最前面显示}}
</script>

删除节点

  • node.removeChild( ) 方法从DOM中删除一个子节点 返回删除的节点
<body><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><button>删除</button><script>var ul = document.querySelector('ul')var but = document.querySelector('button')but.onclick = function(){if( ul.children .length == 0){this.disabled = true;}else{ul.removeChild( ul.children[0])}}</script>
</body>



复制节点(克隆节点)

  • node.cloneNode() 方法返回调用该方法的节点的一个副本 也称为克隆节点 拷贝节点
  • 如果括号参数为空 或者是false 则是浅拷贝 即 只克隆复制节点本身 不克隆里面的子节点
  • 如果括号参数为 true 则是深度拷贝 会复制节点本身以及里面所有的子节点
<body><ul><li>不为所爱之人哭泣,只因从未离去。</li><li>明媚如风,轻盈似箭!</li><li>一点疼痛能让偷窥者牢记我的魅力!</li><li>风会带走你曾经存在过的证明。</li></ul><script>var ul = document.querySelector('ul')//.cloneNode() 参数为空 或者是false 则是浅拷贝 即 只克隆复制节点本身 不克隆里面的子节点var lis = ul.children[0].cloneNode(true)ul.appendChild(lis)</script>
</body>

★案例★

动态 生成表格 创建、删除单元格

<body><table cellspacing='0'><thead ><th>英雄</th><th>类型</th><th>路线</th><th>操作</th></thead><tbody></tbody>
</table><script>// 先准备好 数据var datas = [{name:'虞姬',type:'射手',route:'发育路'},{name:'甄姬',type:'法师',route:'中路'},{name:'蔡文姬',type:'辅助',route:'游走'},{name:'李白',type:'刺客',route:'打野'},{name:'李信',type:'战士',route:'对抗路'},  {name:'东皇太一',type:'坦克',route:'游走'},];var tbody = document.querySelector('tbody')for( var i = 0; i < datas.length; i++){ // 管行 tr// 创建tr行var tr = document.createElement('tr')tbody.appendChild(tr) // 行里面 创建单元格 跟数据有关系的三个单元格 单元格的数量取决于每个对象里面的属性个数 for( var k in datas[i]){   // 管列 td//   创建单元格var td = document.createElement('td')td.innerHTML = datas[i][k]tr.appendChild(td)}// 创建删除单元格var td = document.createElement('td')td.innerHTML= '<a href="javascript:;">删除</a>'tr.appendChild(td)}//    删除操作var as =document.querySelectorAll('a')for(var i = 0;i < as.length;i++){as[i].onclick = function(){// 点击a 删除 A当前所在行 node.removeChild(child)tbody.removeChild(this.parentNode.parentNode)}}</script>
</body>
</html>


点击删除

可以直接添加 属性

JavaScript 节点概述 、父节点 parentNode、子节点children、兄弟节点、创建节点 添加节点、删除节点、复制拷贝节点 ★案例★相关推荐

  1. JavaScript学习笔记:创建、添加与删除节点

    JavaScript学习笔记:创建.添加与删除节点 文章目录 JavaScript学习笔记:创建.添加与删除节点 一.DOM对象节点类型 二.创建节点 1.创建元素节点 2.创建文本节点 3.创建属性 ...

  2. 089_DOM节点动态创建、添加和删除

    1. 创建节点 1.1. 创建元素 document.createElement(tagName); 1.2. 创建文本 document.createTextNode("这是新文本.&qu ...

  3. JS中创建、添加、删除节点

    createElement():创建节点 appendChild():添加节点(还有一个很相似的 inertBefore():插入节点,两个参) removeChild():删除节点 <!DOC ...

  4. JS DOM 编程复习笔记--父元素、子元素和兄弟元素(三)

    今天我们来复习DOM中的获取父元素.子元素和兄弟元素的API,它们主要有parentNode.firstChild.firstElementChild.lastChild.lastElementChi ...

  5. Vue中获取当前点击元素的父元素、子元素、兄弟元素

    Vue如何获取当前点击元素? 获取父元素.子元素.兄弟元素呢? 通过帮定点击事件: 例如: <button class="shanchu" @click="shan ...

  6. java document创建节点_javasript 的DOM 节点操作:创建,插入,删除,复制以及查找节点...

    DOM 含义: DOM 是文档对象模型(Document Object Model) 是一种基于浏览器编程的一套API 接口,我W3C 出台推荐的标准.其赋予了JS 操作节点的能力,当网页被加载时,浏 ...

  7. JS----DOM节点操作:创建 ,插入,删除,复制,查找节点

    摘自:https://blog.csdn.net/torrex/article/details/54376633 一.创建节点.追加节点 1.createElement(标签名)创建一个元素节点(具体 ...

  8. js的DOM节点操作:创建 ,插入,删除,复制,查找节点

    DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准.其赋予了JS操作节点的能力.当网页被加载时,浏览器就会创建页面的 ...

  9. js DOM节点操作之创建、添加、删除和克隆节点

    1. 创建节点 document.createElement("tagName"):tagName为HTML标签名,创建一个标签名为tagName的元素节点. <body&g ...

最新文章

  1. php数字截取2位小树,数据结构-PHP 二分搜索树的层序遍历(队列实现)
  2. 兼容性好的CSS字体投影
  3. 信息论3——信道(单符号离散信道,互信息,各种熵)
  4. BaseExecutor.query()-创建CacheKey
  5. 阿里大数据分析与应用(part7)--机器学习平台PAI
  6. linux 设备挂载ppt,.linux 挂载各种设备.pdf
  7. linux中快速清空文件内容的方法
  8. 怎么查看ingress的规则_Prometheus PormQL语法及告警规则写法
  9. codeforces 711A A. Bus to Udayland(水题)
  10. 传统HTML页面实现模块化加载
  11. html5都有神马岗位,HTML5的优势和岗位要求你都知道吗
  12. matlab LSB算法的三种改进
  13. mysql同时满足升序和降序_mysql中的升序和降序以及一个字段升序和一个字段降序...
  14. 团队如何开会,开会准则
  15. 【06月21日】北上资金持股比例排名
  16. 熬秃了头整理的网络工程师学习笔记和心得:传闻中的OSPF到底是什么
  17. html.partial mvc5,.net mvc5的 完整源码(深入学习MVC非常有用)
  18. 实现简单的校园网自动登录
  19. 机器人平台搭建(一)——机器人的组成
  20. 怎么画流程图?手把手教你制作

热门文章

  1. 虚幻5:或许将会颠覆可视化行业
  2. 大化设计模式-单例模式
  3. HBase基础: 表设计思路
  4. html 怎么设置整体的大小,html文本框怎么设置大小
  5. 基于 Pytorch 疾病图片诊断识别 ResNet
  6. 阿里云ECS lnmp linux7 安装mongodb连接不上 child process failed, exited with error number
  7. 拼图-宫格的隐私政策
  8. atoi,itoi,atol,strtol, strtod函数转换
  9. 一招去掉电脑广告弹窗推荐界面
  10. CSS系列之鼠标样式 cursor