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. python面试题四:Python web框架

    1 django.flask.tornado框架的比较? 2 什么是wsgi? WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口.具体的来说, ...

  2. sublime text 3+java只编译不输出结果 solution

    文章摘自:https://blog.csdn.net/VincentLuo91/article/details/53007135 版权声明:本文为CSDN博主「vincentluo91」的原创文章,遵 ...

  3. redis(十一):Redis 列表(List) (python)

    # -*- coding: utf-8 -*- import redis r =redis.Redis(host="123.156.74.190",port=6379,passwo ...

  4. tf.nn.conv2d函数和tf.nn.max_pool函数介绍

    tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 介绍参数: input:指卷积需要输入的 ...

  5. 开源利器分享:BitBar 坐看今天你的项目涨了多少 star

    今天开头我想叨叨几句,我个人最近的感受.在这个信息爆炸,互联网的时代里.我的周遭总是充斥者着各种让人能产生焦虑的信息, 我不知道有没有小伙伴和我一样,看到各种神通广大.游戏人生的大侠,低头看看自己当前 ...

  6. toad for oracle 小技巧

    在SQL*LOADER 工具上(或者称为SQLLDR,读为:“sequel loader”),因为它仍然是装载数据的主要方法,SQLLDR 能够在极短的时间内装 载庞大数量的数据. 我也是初使用,理解 ...

  7. Windows 磁盘分区后如何再合并&如何用Windows自带工具扩大某个分区

    Windows 磁盘分区后如何再合并&用Windows自带工具扩大某个分区 注:此方法有一定的成功率,更加完善可行的方法请看http://www.diskgenius.cn/help/part ...

  8. django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.解决办法

    "E:\API_Manager_PlatForm\venv\lib\site-packages\django\db\backends\mysql\base.py"在这个路径里件把b ...

  9. STL Queue(队列)学习笔记 + 洛谷 P1540 机器翻译

    队(Queue) 队简单来说就是一个先进先出的“栈”,但是不同于标准“栈”的先进后出. 基本操作: push(x) 将x压入队列的末端 pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回 ...

  10. java 将整型数组转化为字符串

    java arrays 和arrayList 的区别 package com.vc; import java.util.Arrays; public class Demo05 { public sta ...