「掘金日新计划 · 8 月更文挑战」的第3天——这样,轻松学习JavaScript 下

101 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

image.png

昨天只是整理了JavaScript的基本语法,还有核心的DOM和BOM,里面的内容很简单,但是需要多记忆

正文开始啦

一、详解DOM

1.了解DOM

1)什么是DOM

  • w3c提的一个标准
  • DOM就是文档对象模型,是一个抽象的概念定义了访问和操作HTML文档的方法

2)HTML和txt文本的区别
HTML是有组织的结构化文件

3)什么是DOM树
1.浏览器将结构化的文档以"树"的结构存储在浏览器内存里 
2.每个HTML元素被定义为节
3.这个节点有自己的属性(名称、类型、内容 ) 
4.有自己的层级关系(parent, child, sibling)

4)图解DOM树

image.png

2.对DOM节点的一些常⻅操作

1)查找节点

事件描述
onchangeHTML 元素已被改变
onclick用户点击了 HTML 元素
onmouseover用户把鼠标移动到 HTML 元素上
onmouseout用户把鼠标移开 HTML 元素
onkeydown用户按下键盘按键
onload浏览器已经完成⻚面加载

2)改变元素内容 element就是DOM的对象

方法描述
element.innerHTML = new html content改变元素的 inner HTML
 element.attribute = new value改变 HTML 元素的属性值
element.setAttribute(attribute,value)改变 HTML 元素的属性值
 element.style.property = new style改变 HTML 元素的样式

3)添加和删除元素

方法描述
document.createElement(element)创建 HTML 元素
document.removeChild(element)删除 HTML 元素
document.appendChild(element)添加 HTML 元素
document.replaceChild(element)替换 HTML 元素
document.write(text)可写入 HTML

3.结合事件对DOM进行操作

1)什么是事件
事件指的是在html元素上发生的事情比如图片元素被点击
事件触发时,可设置触发一段js代码, 事件触发后会执行这段js代码

2)常⻅的HTML事件

事件描述
onchangeHTML 元素已被改变
onclick用户点击了 HTML 元素
onmouseover用户把鼠标移动到 HTML 元素上
onmouseout用户把鼠标移开 HTML 元素
onkeydown用户按下键盘按键
onload浏览器已经完成⻚面加载

3)怎么对事件作出反应 (1)通过元素的事件属性

(2)启用事件监听器

  • addEventListener 给DOM对象添加事件处理程序 
  • removeEventListener删除给DOM对象的事件处理程序

(3)onclick和addEventListener的区别

  • onclick会被覆盖 image.png

  • addEventListener可以同时注册多个,根据注册顺序,先后执行

image.png

4.深度剖析JS中事件的一些机制

1)事件传播的两种机制

  • 冒泡
  • 捕获

2)图解事件捕获和事件冒泡

image.png

3)什么是事件代理
思考:父级那么多子元素,怎么区分事件本应该是哪个子元素的 事件代理就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

4)怎么取消冒泡或者捕获

  • event.stopPropagation();
  • 拓展方法:// 阻止元素行为, 例如a连接跳转
    event.preventDefault()

5)JavaScript中的定时器 (1)延迟执行

  • setTimeout(function, 毫秒)
  • 停止:clearTimeout(id) // 参数必须是由 setTimeout() 返回的
    ID 值

image.png

(2)定时执行

  • setInterval(function, 毫秒)
  • 停止:setInterval(id) // 参数必须是由 setInterval() 返回的
    ID 值

image.png

二、Bom

1.BOM及其常用内置对象

  • BOM——浏览器对象模型(Browser Object Model (BOM))
  • 内置对象——window全局属性  screen看到客户端的属性  location刷新跳转  history

2.BOM基础之 JavaScript 弹出框类型

警告框

alert('hello')

确认框

var isConfirm = confirm('请确认') console.log('下一步', isConfirm)
// 有返回值的

提示框

var isPrompt = prompt('请输入姓名')
console.log(isPrompt) // 是null 或者 用户输入的值

3.浏览器基本概念之Cookie

1)了解Cookie 

  • Cookie是计算机上存储浏览器的数据用的
  • 容量大小大概4KB
  • 基本语法——document.cookie

2)为什么存在Cookie
浏览器关闭后,服务器会忘记用户的一切让浏览器记住用户信息

3)cookie操作 (1)创建和读取cookie

// 通过Document对象
document.cookie="username=Nick; expires=Thu, 18
Dec 2043 12:00:00 GMT";
setCookie('username''Nick')

(2)删除cookie

// 设置过期时间\
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

(3)设置cookie函数

functionsetCookie(cname,cvalue){
var d = new Date(); d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString(); document.cookie = cname+"="+cvalue+";
"+expires;
}

function getCookie(cname){ var name = cname + "=";
var ca = document.cookie.split(';'); // 将字符串以; 分割数组
 for(var i=0; i<ca.length; i++) {
   var c = ca[i].trim(); // 把多余空格和回⻋删掉
    if (c.indexOf(name)==0) { return
        c.substring(name.length,c.length);
  }

}

return "";

}

传入参数cname键名,cvalue值,(exdays过期事件) 怎么设置过期时间? 通过new获取时间,对这个d对象