JS中常见的DOM操作API

本文介绍了如何使用JavaScript中的createElement方法创建元素,强调了元素需通过appendChild或insertBefore等方法将其添加到HTML文档中。还详细讲解了节点修改API如appendChild、insertBefore、removeChild和replaceChild,以及元素属性设置和样式操作。旨在帮助前端开发者理解和掌握DOM操作技巧。
摘要由CSDN通过智能技术生成

通过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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

    img

    既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

    由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

    如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

    最后

    前15.PNG

    前16.PNG

    由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处获取

    觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)**

    最后

    [外链图片转存中…(img-8MRcp330-1712460635210)]

    [外链图片转存中…(img-fi2kAZmn-1712460635211)]

    由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处获取

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值