通过createElement创建的元素并不属于document对象,它只是创建出来,并未添加到html文档中,要调用appendChild和insertBefore等方法将其添加到HTML文档中。
- 创建文本节点------createTextNode
var text = document.createTextNode(‘我是文本节点’)
document.body.appendChild(text)
示例:
假设现有一题目,要求给ul添加1000个li,我们可以使用以下方法
①
要求给ul添加1000个li
这里是立即执行函数
(function () {
//为了计时方便
const timeStart = Date.now();
var ul = document.getElementById(‘ul’);
var str = ‘’
for (let i = 0; i < 1000; i++) {
str += ‘
- 第’ + (i + 1) + ‘子节点
- ’;
}
ul.innerHTML = str;
console.log(‘耗时:’ + (Date.now() - timeStart) + ‘毫秒’)
})()
②:
(function () {
//为了计时方便
const timeStart = Date.now();
var ul = document.getElementById(‘ul’);
for (let i = 0; i < 1000; i++) {
var li = document.createElement(‘li’)
li.innerHTML = ‘我是第’ + (i + 1) + ‘个li元素’
ul.appendChild(li);
}
console.log(‘耗时:’ + (Date.now() - timeStart) + ‘毫秒’)
})()
4.3 节点修改API
节点修改API都具有下面几个特点:
1.不管是心新增还是替换节点,如果其原本就在页面上,那么原来位置的节点将被移除;
2.修改之后的节点本身绑定的事件不会消失
- appendChild----增加节点
语法:
parent.addChild(child)
说明:它会将child追加到parent的子节点的最后面。另外,如果被添加的节点是一个页面中存在的节点,则执行后这个节点将会添加到新的位置,其原本所在的位置将移除该节点,也就是说不会同时存在两个该节点在页面上,且其事件会保留。
- insertBefore–插入节点
说明:将某个节点插入到另外一个节点的前面
语法:
parentNode.insertBefore(newNode,refNode)
示例如下:
我是父节点
我是旧的子节点
- removeChild—删除节点
说明:用于删除指定子节点并饭hi子节点
语法:
var deleteChild=parent.removeChile(node)
deleteChild指向被删除的节点,它仍然存在于内存中,可以对其进行下一步操作。另外,如果被删除的节点不是其子节点,则会报错
一般删除节点都是这样删除的,示例如下:
function removeNode(node)
{
if(!node) return;
if(node.parentNode) node.parentNode.removeChild(node);
}
- replaceChild–替换节点
说明:replaceChild用于将一个节点替换另一个节点
语法:
parent.replaceChild(newChild,oldChild)
4.4 元素属性型API
- setAttribute----给元素设置属性
element.setAttribute(name,value);
其中,name为属性名,value为属性值
- getAttribute
getAttribute返回指定的属性名相应的特性值,如果不存在,则返回null
var value=element.getAttribute(“id”);
4.5 样式相关的API
- 直接修改元素的样式
elem.style.color=“red”;
elem.style.setProperty(‘font-size’,‘16px’);
elem.style.removeProperty(‘color’);
- 动态添加样式规则
var style=document.createElement(‘style’)
style.innerHTML=‘body{color:red} #box{background:red}’;
document.head.addChild(style);
参考文章:
https://blog.csdn.net/hj7jay/article/details/53389522自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处获取。
觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)**
最后
[外链图片转存中…(img-8MRcp330-1712460635210)]
[外链图片转存中…(img-fi2kAZmn-1712460635211)]
由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处获取。