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>

最新文章

  1. 解决git无法clone提示443以及配置git代理方法
  2. PHP中interface与 implements 关键字
  3. 运用Mono.Ceci类库修改.NET程序集 走上破解软件的道路
  4. 『转载』使用TortoiseSVN客户端
  5. 对象生命周期及crud操作
  6. hdu 3450 树状数组
  7. Linq/EF/lambda Group by/Order by 多个字段详细用法
  8. 动态规划:NOI 2009 管道取珠
  9. Direct3D 2D文本绘制
  10. 使用BackgroundWorker组件进行异步操作编程
  11. 基于PaaS人事部门间平台多重身份的技术解决方案
  12. mac 下常用命令备忘录
  13. LimeSDR 上手指南
  14. 【CentOS】MySQL的安装
  15. C# 一般处理程序生成验证码
  16. 【java】JDK与JRE的区别
  17. Android Studio 增加按钮响应事件
  18. ElasticStack系列之十九 &amp; bulk时 index 和 create 的区别
  19. ios 给键盘上面加上“完成”
  20. jackson构建复杂Map的序列化

热门文章

  1. CMDB01 /paramiko模块、项目概述、项目架构、项目实现
  2. Shaderlab-10chapter-立方体纹理、玻璃效果
  3. Json对象,Json数组,Json字符串的区别
  4. Java继承多态
  5. SW算法求全局最小割(Stoer-Wagner算法)
  6. 题解 洛谷 P3185 【[HNOI2007]分裂游戏】
  7. Webpack前世今生
  8. MySQL操作数据库
  9. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
  10. kafka笔记——入门介绍