- DOM 本质
- DOM 节点操作
const div1 = document.getElementById("div1");
const divList = document.getElementsByTagName("div");
console.log(divList.length);
console.log(divList[0]);
const containerList = document.getElementsByClassName(".container");
const pList = document.querySelectorAll("p");
- DOM 结构操作
const div1 = document.getElementById("div1");
const p1 = document.createElement("p");
p1.innerHTML = "this is p1";
div1.appendChild(p1);
const p2 = document.getElementById("p2");
div1.appendChild(p2);
- DOM 性能
DOM操作非常“昂贵”,避免频繁的DOM操作
对DOM查询做缓存
将频繁操作改为一次性操作
for (let = 0; i < document.getElementsByTagName("p").length; i++) {
}
const pList = document.getElementsByTagName("p");
const length = pList.length;
for (let i = 0; i < length; i++) {
}
const listNode = document.getElementById("list");
const frag = document.createDocumentFragment();
for (let x = 0; x < i0; x++) {
const li = document.createElement("li");
li.innerHTML = "List item " + x;
frag.appendChild(li);
}
listNode.appendChild(frag);
- attr 和 property 的区别
p1.style.width = "100px";
p1.className = "red ";
p1.setAttribute("data-name", "imooc");
console.log(p1.getAttribute("data-name "));
- 一次性插入多个 DOM 节点,考虑性能
const ua = navigator.userAgent;
const isChrome = ua.index0f("Chrome");
console.log(isChrome);
console.log(screen.width);
console.log(screen.height);
console.log(location.href);
console.log(location.protocol);
console.log(location.pathname);
console.log(location.search);
console.log(location.hash);
history.back();
history.forward();
const btn = document.getElementById("btn1");
btn.addEventListener("click", (event) => {
console.log("clicked");
});
const p1 = document.getElementById("p1");
const body = document.body;
bindEvent(p1, "click", (e) => {
e.stopPropagation();
alert("激活");
});
bindEvent(body, "click", (e) => {
alert("取消");
});
本身用于浏览器和server通讯
被“借用”到本地存储来
可用document.cpokie = '.….’来修改
缺点:
存储大小,最大4KB
http 请求时需要发送到服务端,增加请求数据量
只能用document.cookie = '.…’来修改,太过简陋
HTML5专门为存储而设计,最大可存5M
API简单易用setItem getItem
不会随着http请求被发送出去
localStorage数据会永久存储,除非代码或手动删除
sessionStorage数据只存在于当前会话,浏览器关闭则清空
一般用localStorage会更多一些
- 描述cookie localStorage sessionStorage区别
容量
API易用性
是否跟随 http请求发送出去