子元素节点的获取方法:
- childNodes:获取该节点的子节点,获取所有的子节点,不分类型
console.log(ul[0].childNodes);
- childElementCount:获取并返回 该节点的 子元素节点数量
console.log(ul[0].childElementCount);
- children:获取到所有的子元素节点
console.log(ul[0].children);
- firstElementChild:获取第一个子元素节点
console.log(ul[0].firstElementChild);
- firstChild:获取第一个子节点
console.log(ul[0].firstChild);
- firstElementChild:获取第一个子元素节点
console.log(ul[0].firstElementChild);
- lastChild:获取最后一个子节点
console.log(ul[0].lastChild);
- lastElementChild:获取最后子元素节点
console.log(ul[0].lastElementChild);
兄弟节点的获取方法:
- nextElementSibling:获取该节点的下一个兄弟元素节点
console.log(ul[0].nextElementSibling);
- nextSibling:获取该节点的下一个兄弟节点
console.log(ul[0].nextSibling);
- previousElementSibling:获取该节点的 上一个兄弟元素节点
console.log(ul[0].previousElementSibling);
- previousSibling:获取该节点的 上一个兄弟节点
console.log(ul[0].previousSibling);
创建节点:
语法:
var li_new = document.createElement(“li”);
备注: 元素创建完成后,并不在DOM树中,需要我们手动添加
添加节点:
- appendChild: 添加到目标里的最后一位
目标.appendChild(内容)
ul[0].appendChild(li_new);
- insertBefore:将新节点,添加到已有的节点之前
父节点.insertBefore(新的节点,已有的节点)
ul[0].insertBefore(li_new,ul_li[0]);
备注: 添加到的目标,一定是在页面中已经存在的
删除节点:
- removeChild
指定目标的父元素.removeChild(指定目标)
ul[0].removeChild(ul_li[0]);
- remove
指定目标.remove()
ul_li[0].remove();
替换节点:
替换目标的父元素.replaceChild(新的元素,被替换的元素);
ul[0].replaceChild(meng,ul_li[0]);
克隆节点:
// 需要克隆的目标.cloneNode() ,该方法会将克隆体返回
var meng_two = meng.cloneNode();
nodeName: 返回节点名称
nodeValue: 返回节点属性
nodeType: 返回节点类型
============================================================
闭包的本质: 它就是个函数
概念: 能够访问其他函数内部变量的 函数
条件:
-
在函数中嵌套定义另外一个函数
-
被嵌套的函数(在里面的那个),一定要访问外部函数的变量
-
被嵌套的函数要返回
原理: 通过作用域链
作用: 能持久化 局部变量, 手动 控制局部变量的回收时间
弊端: 不能够大批量的使用,会造成程序加载过慢. 极容易造成内存泄露
返回的方式:
function big(){
var c = 10;
//返回的方式1:
// return function small(){
// console.log©;
// }
// 返回的方式2:
// return function (){
// console.log©;
// }
//返回的方式3:
function small(){
console.log©;
}
return small;
// 函数带着(), 是执行。 不带(), 只是定义
}
var test = big();
test();
==============================================================
作用域链:
先在当前作用域的上下文中查找,找到即执行
如果没有,继续向 上 一层查找,找到即执行。
如查找到全局中,依然没有,报错,阻断程序运行
变量提升:
如果使用了未声明的变量,正常情况会因为找不到而报错
但在使用的下方,出现了它的声明。 会默认将它提升到使用之前。不包括值
先使用,后声明。 该变量的 因变量提升, 可以找到,但值为undefind;
存在的意义: 保证后续任务继续执行,只是失去了 当前功能的值
==============================================================
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
我特地针对初学者整理一套前端学习资料
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
我特地针对初学者整理一套前端学习资料
[外链图片转存中…(img-QiciAaNW-1712354220809)]
[外链图片转存中…(img-2EJvmt20-1712354220809)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算