h5新增自定义属性

    为了保存并使用数据,有一些数据不必要保存到数据库中;
    data开头作为自定义属性并赋值
    兼容性获取element.getAttribute("data-自定义属性名")
    h5新增element.dataset.属性名 或者element.dataset['属性名']
    注意
    如果自定义属性有多个连接起来的 获取的时候一定要用驼峰命名法
    <div class="conter" id="conter"></div>
 <div class="conter" id="conter"></div>
var div = document.getElementById("conter") div.setAttribute("data-index", 1) div.setAttribute("data-list-name", 1000)
// getAttribute获取
console.log(div.dataset);
console.log(div.getAttribute("class"));
console.log(div.getAttribute("data-index")); // h5新增获取自定义属性方法
console.log(div.dataset.index);
console.log(div.dataset["index"]); console.log(div.dataset.listName);
console.log(div.dataset["listName"]);

节点操作

    利用节点层次关系获取元素
    元素节点 nodeType为1
    属性节点 nodetype为2
    文本节点 nodeType为3 文本节点包括文字、空格、换行等
 

节点层次

    父子兄层次关系

1、父级节点

    node.parentNode
    得到的是离他最近的节点 如果没有父节点就返回null
     <div class="box">
<span class="erweima">2</span>
<ul class="ul">
<li>2</li>
<li>2</li>
</ul>
</div>
var box = document.querySelector("box")
console.log(box);
// 父节点parentNode
var erweima = document.querySelector(".erweima")
// 得到的是离他最近的节点 如果没有父节点就返回null
console.log(erweima.parentNode);

子节点

    parentNode.children 非标准 但是现在的浏览器都支持
    子节点childNode 获取到所有的子节点 包括换行
     <ol class="ol">
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
</ol>
// 子节点childNode 获取到所有的子节点 包括换行
var ul = document.querySelector(".ul")
// console.log(ul.childNodes);
console.log(ul.children); var ol = document.querySelector(".ol")
// firstChild获取到的是第一个节点
console.log(ol.firstChild);
// lastchild获取到的啊最后一个节点
console.log(ol.lastChild); // 兼容性问题不推荐使用 ie9以上支持
console.log(ol.firstElementChild);
console.log(ol.lastElementChild); // 实际开发常用的是
console.log(ol.children[0]);
console.log(ol.children[ol.children.length - 1]);

兼容性问题

    node.previousElementSibling 得到上一个元素节点
    node.nextElementSibling 得到下一个元素节点
 
     <div class="group">ssss</div>
<span>4556</span>
var div = document.querySelector(".group")
console.log(div.nextSibling);
console.log(div.nextElementSibling);
console.log(div.previousElementSibling);

创建节点

    document.createElement("节点名")
    node.appendChild(child) 后面追加元素类似于数组的push
    node.insertBefore(child,指定元素) 在指定元素前面添加元素

注意

    我们想要在页面添加元素首先要先创建元素然后再添加元素
<ul class="ul2">
<li>123</li>
</ul>
<script>
// 创建节点
var li = document.createElement("li")
var lis = document.createElement("li")
// 添加节点node.appendChild(child) node父节点 child是子节点
var ul = document.querySelector(".ul2")
ul.appendChild(li)
ul.insertBefore(lis, ul.children[0])
</script>

删除节点

    node.removeChild(child) 删除父元素中的一个子节点
 <button class="button2">删除</button>
<ul class="ul3">
<li>1</li>
<li>12</li>
<li>13</li>
</ul>
<script>
var ul = document.querySelector(".ul3")
var btn = document.querySelector(".button2")
btn.onclick = function () {
if (ul.children.length == 0) {
this.disabled = false
} else {
ul.removeChild(ul.children[0])
} }
</script>

复制节点

    node.cloneNode()  如果括号里面是空的或者是false就只复制了标签 不复制内容  如果括号里面是true 就可以复制内容
  <ul class="ul4">
<li>1</li>
<li>16</li>
<li>12</li>
<li>13</li>
</ul>
<script>
var ul = document.querySelector(".ul4")
var lis = ul.children[0].cloneNode(true);
ul.appendChild(lis)
</script>

JS 节点笔记的更多相关文章

  1. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  2. JS面向对象笔记二

    菜单导航,<JS面向对象笔记一>,  参考书籍:阮一峰之<JavaScript标准参考教程> 一.构造函数和new命令 二.this关键字 三.构造函数和new命令 四.构造函 ...

  3. JS学习笔记5_DOM

    1.DOM节点的常用属性(所有节点都支持) nodeType:元素1,属性2,文本3 nodeName:元素标签名的大写形式 nodeValue:元素节点为null,文本节点为文本内容,属性节点为属性 ...

  4. 【转】Backbone.js学习笔记(二)细说MVC

    文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  7. js读书笔记

    js读书笔记 基本类型的基本函数总结 1. Boolean() 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 "&q ...

  8. 廖雪峰js教程笔记13 插入DOM

    当我们获得了某个DOM节点,想在这个DOM节点内插入新的DOM,应该如何做? 如果这个DOM节点是空的,例如,<div></div>,那么,直接使用innerHTML = '& ...

  9. js 节点 document html css 表单节点操作

    js 节点 document html css 表单节点操作 节点操作:访问.属性.创建 (1)节点的访问:firstChild.lastChild.childNodes.parentChild(父子 ...

随机推荐

  1. 机器学习实战基础(二十六):sklearn中的降维算法PCA和SVD(七) 附录

  2. 数据可视化之DAX篇(十三)熟练使用FORMAT函数,轻松自定义数据格式

    https://zhuanlan.zhihu.com/p/64420449 在进行数据分析时,需要对某个数据进行格式调整的情形经常会遇到,在DAX中有一个专门进行格式调整的函数:FORMAT. 其实对 ...

  3. redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...

  4. 这就是Java代码生成器的制作流程

    1. 前言 前几天写了篇关于Mybatis Plus代码生成器的文章,不少同学私下问我这个代码生成器是如何运作的,为什么要用到一些模板引擎,所以今天来说明下代码生成器的流程. 2. 代码生成器的使用场 ...

  5. DQL:查询表中的记录

    DQL:查询表中的记录 * select * from 表名; 1. 语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 ...

  6. Ant-Design-Vue中关于Form组件的使用

    1.创建form表单的两种方式,不同的方式在js中创建表单的方式也不同 方式1:一般使用在搜索表单中,只需要双向绑定数据即可,那就使用这种方法即可 <template> <a-for ...

  7. DEBUG ArrayList

    1,ArrayList面试必问 说说ArrayList和LinkedList的区别? ArrayList基于数组实现,LinkedList基于链表实现,不同的数据结构决定了ArrayList查询效率比 ...

  8. Github下载文件慢试试这款工具吧

    https://g.widora.cn 可能随时崩溃哦~~暂时还不支持超过 2GB 的仓库,服务器选自日本 vultr 设计思路:通过在日本的 VPS clone -r 代码,下载后压缩成 zip 再 ...

  9. CCNA - Part10 数据包的通信过程

    这篇文章主要是对数据包在同网段和不同网段的转发流程梳理,使用 ping 命令进行实际抓包测试. 网关的概念: 对于像 PC 等终端设备来说,通过交换机可以实现同网段的通信.但如果想要给其他网段发生数据 ...

  10. 设计模式:decade模式

    目的:为系统中的一组联动接口提供一个高层次的接口,从而降低系统的复杂性 优点:使用窗口模式可以使得接口变少 继承关系图: 例子: class Subsystem1 { public: void Ope ...