这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
继续学习js总结一下作为回顾
DOM文档对象模型
创建
createElement('标签名')创建一个节点
createTextNode()
createDocumentFragment() 这个可能比较陌生,根据MDN文档 DocumentFragments 是 DOM 节点。它们不是主 DOM 树的一部分。通常的用例是创建文档片段,将元素附加到文档片段,然后将文档片段附加到 DOM 树。在 DOM 树中,文档片段被其所有的子元素所代替。
因为文档片段存在于内存中,并不在 DOM 树中,所以将子元素插入到文档片段时不会引起页面[回流](对元素位置和几何上的计算)。因此,使用文档片段通常会带来更好的性能。
添加
innerHTML 直接更改里面的内容,修改结构
appendChild子节点添加到父节点,成为最后一个子节点
insertBefore(newEl,refEl)在参考节点前插入节点
获取
querySelector('css选择器')返回首个匹配的元素,没有为null
querySelectorAll('css选择器')获取全部
getElementById()
getElementsByTagName/ClassName/Name
document.body / documentElement/ all[]
更新
innerHTML
innerText,textContent 和上面的区别是,自动编码,保证无法设置任何HTML标签
.style 获取对应css属性
删除
需要获得要删除的节点及父节点,调用父节点的removeChild(子节点)来删除
同时为了内存,记得删除子节点的引用
也来一道算法 二分查找,利用分界线的思想,l指向小于目标元素的位置,r指向大于等于目标元素的位置,直到二者相遇,才停止二分查找的过程,具有O(logn)复杂度
const bs = function (arr, value) {
let l = 0,
r = arr.length;
while (r - l > 1) {
let mid = (l + r) >> 1;
if (arr[mid] >= value) {
r = mid;
} else {
l = mid;
}
}
return r;
};
快速排序,js实现
var quickSort = function (arr, l, r) {
if (l > r) {
return;
}
let tmp = arr[l];
let i = l,
j = r;
while (i != j) {
while (arr[j] >= tmp && j > i) j--;
while (arr[i] <= tmp && j > i) i++;
if (j > i) {
// let t = arr[i];
// arr[i] = arr[j];
// arr[j] = t;
[arr[j], arr[i]] = [arr[i], arr[j]];
}
}
// arr[l] = arr[i];
// arr[i] = tmp;
[arr[l], arr[i]] = [arr[i], arr[l]];
quickSort(arr, l, i - 1);
quickSort(arr, i + 1, r);
};
let arr = [1, 3, 5, 3, 1, 6, -1];
quickSort(arr, 0, arr.length - 1);
console.log(arr);
参考MDN 链接 developer.mozilla.org/zh-CN/docs/…