DOM重点核心

    文档对象模型,是W3C推荐的处理可扩展的标记语言的标准编程接口
    我们主要针对与勇士的操作,主要有创建、增加、删除、修改、查询、属性操作、事件操作
  三种动态创建元素的区别
 document.write() //在文档中写一个标签,如果页面文档加载完毕,再调用这句话会导致页面重绘
  <button>123</button>
<script>
var btn = document.querySelector("button")
btn.onclick = function () {
document.write("<div>123</div>")
}
</script>
  element.innerHTML //创建多个元素效率更高(毕业拼接字符串采取数组形式拼接)结果稍微繁杂
 <div class="box">
</div>
<script>
var div = document.querySelector(".box")
// for (var i = 0; i < +100; i++) {
// div.innerHTML += "<a href='#'>1234</a>"
// }
var arr = []
for (var j = 0; j <= 100; j++) {
arr.push( '<a href = "#"> 1234 </a>')
}
div.innerHTML = arr.join("")
</script>
     document.createElement() //创建多个元素 效率稍微低一些 但是结构会很清晰
  <div class="box2">
</div>
<script>
var box2 = document.querySelector(".box2")
for (var i = 0; i <= 100; i++) {
var a = document.createElement("a")
box2.appendChild(a)
}
</script>

增加的主要有

    appendChild(在后面增加)、insertbefore(在前面增加)

删除

    removeChild
    修改主要是对元素的属性,DOM元素的内容、属性、表单的值等
    修改元素的属性:src、innerHTML、title等
    修改普通元素内容:innerHTML、innerText
    修改表单属性:value、type、disabled等
    修改元素样式:style/className

查询

    DOM提供的API方法:getElementByid,getElementByTagName 老方法不推荐使用
    H5新增的方法:querySelector、querySelectorAll 提倡使用
    利用节点操作获取元素:父节点(parentNode)、子节点(children)、兄(previousElementSibling、nextElementSibling)提倡使用

属性操作

    setattribute:设置DOM的属性值
    getAttribute:得到DOM的属性值
    removeAttribute移除属性值

事件操作

    给元素注册事件,采取事件源.事件类型=事件处理程序
    onclick~~~~~~~~~~鼠标点击触发
    onmouseover~~~~~~~~鼠标经过触发
    onmouseout~~~~~~~~~鼠标离开触发
    onfocus~~~~~~~~~~获取鼠标焦点触发
    onblur~~~~~~~~~~~失去鼠标焦点触发
    onmousemove~~~~~~~~~~鼠标移动触发
    onmouseup~~~~~~~~~~鼠标弹起触发
    onmousedown~~~~~~~~~鼠标按下触发
 

    给元素添加事件,我们称为注册事件或者绑定事件

注册事件的两种方法

    传统方法和方法监听注册事件方式
    传统方式
    利用on开头的事件onclick 特点是注册事件的唯一性,同一个元素同一个事件只能设置一个处理函数,最后注册的处理函数将会覆盖前面注册的函数

方法监听注册方式

    addEventListener() 推荐使用 特点同一个元素同一个事件可以注册多个监听器按照注册顺序依次执行
    eventTarget.addEventListener(type,listener[,useCapture])方法将指定的监听器注册到
    type:事件类型字符串,比如click、mouseover 注意:这里不需要带on
    listener:事件处理函数,事件发生时,会调用该监听函数
    useCapture:可选参数,是一个布尔值,默认是false.学完DOM事件后进一步学习
    事件监听注册事件 addeventlistenr()
    里面的事件类型是字符串 必须加引号 而且不带on
    同一个元素,同一个事件可以添加多个监听器
   attachevent()方法 i9以前的版本支持 不推荐使用
     <button class="btn2">1234</button>
<script>
var btn = document.querySelector(".btn2")
// 事件监听注册事件 addeventlistenr 里面的事件类型是字符串 必须加引号 而且不带on
btn.addEventListener('click', function () {
alert("88")
})
btn.addEventListener('click', function () {
alert("33")
})
</script>
删除事件的方式
    传统方法和方法监听注册事件方式eventTaget.onclick=null;
    方法监听注册:removeEventListener(type,lister[,useCapture])
     <div>1</div>
<div>2</div>
<div>3</div>
<script>
var divs = document.querySelectorAll("div")
divs[0].onclick = function () {
alert("ok")
divs[0].onclick = null
} divs[1].addEventListener('click', fn)
function fn() {
alert("99")
divs[1].removeEventListener('click', fn)
}
</script>

DOM事件流

    事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程就叫DOM事件流
    捕获阶段~~~~目标阶段~~~~冒泡阶段

注意

    JS代码这里执行捕获或者冒泡其中的一个阶段
    onclick和attachevent只能得到冒泡阶段
    addeventlistener()里面的第三个参数如果是true 表示事件捕获阶段调用处理程序,如果是false表示在事件冒泡阶段调用处理函数
 <div class="father">
<div class="son">son</div>
</div>
<script>
// 捕获阶段
// var son = document.querySelector(".son")
// son.addEventListener('click', function () {
// alert("00")
// }, true)
// var father = document.querySelector(".father")
// father.addEventListener('click', function () {
// alert("father")
// }, true) // 冒泡阶段 如果第三个参数是false就是冒泡阶段
var son = document.querySelector(".son")
son.addEventListener('click', function () {
alert("00")
}, false)
var father = document.querySelector(".father")
father.addEventListener('click', function () {
alert("father")
}, false)
document.addEventListener('click', function () {
alert("987")
})
</script>

JS DOM重点核心笔记的更多相关文章

  1. Node.js高级编程读书笔记Outline

    Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...

  2. HTML DOM(学习笔记二)

    嗯,在HTML DOM(学习笔记一)中简单描述了一下HTML DOM 是什么,这一篇将记录下来有关HTML DOM的内容! 1:DOM节点 首先,再来看一下HTML DOM的树状结构,如下图所示: 这 ...

  3. Underscore.js 源码学习笔记(下)

    上接 Underscore.js 源码学习笔记(上) === 756 行开始 函数部分. var executeBound = function(sourceFunc, boundFunc, cont ...

  4. node的重点学习笔记(1)————node

    node的重点学习笔记(1)----node 提到node就必须提一下他的npm了,npm是世界上最大的开放源代码的生态系统.通俗来说这就如同亚马逊丛林,要啥物种有啥物种,一个巨大的生态圈,里面有一堆 ...

  5. 前端三件套 HTML+CSS+JS基础知识内容笔记

    HTML基础 目录 HTML基础 HTML5标签 doctype 标签 html标签 head标签 meta标签 title标签 body标签 文本和超链接标签 标题标签 段落标签 换行标签 水平标签 ...

  6. 货架工程项目之js dom实现项目工程进度图

    笔者最近要负责有个项目工程网站的安装进度过程,实现的效果要求大概如下图所示 由于笔者没有参与到数据库的制作,得知他们这个项目设计工序的时候就一个开始日期的和完成日期,连整个项目的安装结束时间都没有简直 ...

  7. 【09-23】js原型继承学习笔记

    js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...

  8. js DOM优化相关探索

    我在这尝试两个方面:-->DOM与js -->DOM与浏览器 (最近在秒味视频上学到不少,哈哈哈) 一.DOM与js 1.js与dom的交互问题 频繁的与dom交互,是一件浪费时间与金钱的 ...

  9. js DOM的几个常用方法

    <div id="div1">这是个测试</div> <p </p> <p </p> //js DOM的几个常用方法 / ...

随机推荐

  1. Flask 基础组件(六):Session

    除请求对象之外,还有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使用会话,你需要设置一个密钥. 设 ...

  2. angular浏览器兼容性问题解决方案

    问题:edge浏览器下,固定列的边框消失 原因:ng-zorro-antd表格组件使用nzLeft和nzRight指令固定的表格列,这两个指令的实现css3中的标签: position: -webki ...

  3. 怎样从gitHub上面拉项目

    1.注册 https://gitee.com/oschina 2.拿到代码在gitHub上的地址 3.打开eclipse-->import https://git.oschina.net/cai ...

  4. Java数组最大值和最小值

    package com.mybatis.demo.exercise; /** * @author yinsenxin */ public class ArrayMaxAndMin { public s ...

  5. 虚拟DOM Vitural DOM Tree

      提起Virtual DOM,总是给人一种高深莫测的感觉,大家都知道它比DOM快.那么Virtual DOM到底是何方神圣呢?在深入理解Virtual DOM之前,先让我们回顾一下DOM. 一.什么 ...

  6. DirectX11 With Windows SDK--35 粒子系统

    前言 在这一章中,我们主要关注的是如何模拟一系列粒子,并控制它们运动.这些粒子的行为都是类似的,但它们也带有一定的随机性.这一堆粒子的几何我们叫它为粒子系统,它可以被用于模拟一些比较现象,如:火焰.雨 ...

  7. win10里面怎么获取最高管理员权限

    Windows10专业版 1,按下win+R键唤出“运行”窗口,输入gpedit.msc. 2,这时打开了组策略编辑器,在左边找到“计算机配置-Windows 设置”,再进入右边“安全设置”,如图. ...

  8. Monster Audio 使用教程 (六) 发送音轨的设置

    因为最近有些用户,不太清楚怎么发送给混响音轨,所以这里我简单介绍一下. Monster Audio的音轨,主要分为两种类型: 1.白色推子:表示普通音轨 2.蓝色推子:表示“可接收发送音轨”,其他音轨 ...

  9. 线上CUP负载过高排查方法

      1.top命令查看线程占据的CPU 注意:上面行的cpu是多个内核的平均CPU,不可能超过100% 下面的cpu是每个进程实际占用的cpu,可能超过100% 备注:查看多个内核cpu,只需要在输入 ...

  10. Hexo博客美化之蝴蝶(butterfly)主题魔改

      Hexo是轻量级的极客博客,因为它简便,轻巧,扩展性强,搭建部署方便深受广大人们的喜爱.各种琳琅满路的Hexo主题也是被各种大佬开发出来,十分钦佩,向大佬仰望,大声称赞:流批!!! 我在翻看各种主 ...