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. java 面向对象(二十七):注解的使用

    1. 注解的理解① jdk 5.0 新增的功能*② Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理.通过使用 Annotation, ...

  2. CMMI规范目录结构

  3. Apache Kylin v3.1.0 重点功能推介

    Apache Kylin v3.1.0 已于上周正式发布,其中包含了许多值得一试的新功能,本文选择了 Presto 查询下压引擎.Flink 构建引擎.Kylin on Kubernetes 解决方案 ...

  4. mysql groupby 字段合并问题(group_concat)

    在我们的日常mysql查询中,我们可能会遇到这样的情况: 对表中的所有记录进行分类,并且我需要得到每个分类中某个字段的全部成员. 上面的话,大家看起来可能不太好懂,下面举一个例子来给大家说明. 现在我 ...

  5. Python Ethical Hacking - The Lab and Needed Software

    The Lab and Needed Software Attacker Machine - Kali Linux https://www.kali.org/ 1. Install the softw ...

  6. [spring] -- AOP、IOC、DI篇

    AOP(面向切面编程) 怎么理解这个切面编程的概念及优点? 概念: 横切关注点与业务逻辑相分离,切面能帮助我们模块化横切关注点: 优点: 现在每个关注点都集中于一个地方,而不是分散到多处代码中: 服务 ...

  7. Monster Audio 使用教程 (五) 添加区域效果器

    我们可以在音轨上,某一个时间区域内,添加一组效果器,这组效果器,只有在播放指针进入它的区域时,效果器才可以处理声音 首先,先在时间刻度上,设定好时间范围 然后,在音轨的波形区域点击右键,然后点击[添加 ...

  8. 初识Http

     HTTP是一个用在计算机世界里的协议,它确立了一种计算机之间交流通信的规范,以及相关的各种控制 和错误处理方式.  HTTP专门用来在两点之间传输数据,不能用于广播.寻址或路由. HTTP传输的是文 ...

  9. SpringBoot实现前后端数据交互、json数据交互、Controller接收参数的几种常用方式

    1.获取参数的集中常见注解 @PathVariable:一般我们使用URI template样式映射使用,即url/{param}这种形式,也就是一般我们使用的GET,DELETE,PUT方法会使用到 ...

  10. Numpy创建数组

    # 导入numpy 并赋予别名 np import numpy as np # 创建数组的常用的几种方式(列表,元组,range,arange,linspace(创建的是等差数组),zeros(全为 ...