javascript - 为什么更改 textContent 值也会更改 HTML
问题描述
我在网站中有以下代码,我需要更改“入门”文本
<h4 data-v-318a1596="" class="h4">
<div data-v-318a1596="">
<i data-v-318a1596="" class="fa fa-check-square-o" style="color: rgb(141, 153, 166); font-size: 18px; margin-right: 6px;"></i>
Getting Started
</div>
</h4>
正如我在这里所读到的,我尝试textContent
如下使用;
document.getElementsByClassName('h4')[0].childNodes[0].textContent='My text here'
上面的代码替换了文本,但它也替换了下面的其他 HTML 部分;
<i data-v-318a1596="" class="fa fa-check-square-o" style="color: rgb(141, 153, 166); font-size: 18px; margin-right: 6px;"></i>
所以在运行我的代码后,源代码如下所示;
<h4 data-v-318a1596="" class="h4"><div data-v-318a1596="">My text here</div></h4>
你能帮我只替换文本部分吗?
解决方案
您可以更改 textNodes 但您必须导航 DOM 才能到达那里
const divToChange = document.querySelector(".h4 > div");
const textNode = divToChange.querySelector("i").nextSibling;
divToChange.replaceChild(document.createTextNode("Finish the job"),textNode)
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" />
<h4 data-v-318a1596="" class="h4">
<div data-v-318a1596="">
<i data-v-318a1596="" class="fa fa-check-square-o" style="color: rgb(141, 153, 166); font-size: 18px; margin-right: 6px;"></i>
Getting Started
</div>
</h4>
当然有跨度更简单
如果你可以改变它,那么你也可以改变无效的 h4
document.querySelector(".h4 > div > span").textContent = "Finish the job"
.h4 span { font-weight:bold }
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" />
<div data-v-318a1596="" class="h4">
<div data-v-318a1596="">
<i data-v-318a1596="" class="fa fa-check-square-o" style="color: rgb(141, 153, 166); font-size: 18px; margin-right: 6px;"></i>
<span>Getting Started</span>
</div>
</div>
推荐阅读
- javascript - 我如何知道轴中显示的日期?
- android - gradle 3.5.0 中的文件“root/lib/getLibs.ps1”
- c++ - 为什么在使用线程池时嵌套调用 boost::async 会阻塞?
- python - 如何检查当前窗口中是否打开了上下文菜单或下拉列表?
- sql - 具有滞后事件分区的行号
- gitlab-ci - gitlab:有没有办法在工作期间而不是之后http访问工件?
- html - 如何使用 PWA 在其中一个页面中禁用手机滚动
- session - Puppeteer:如何存储会话(包括 cookie、页面状态、本地存储等)并稍后继续?
- apache-kafka - 即使生产者得到确认,Kafka中也会发生消息丢失吗?
- c# - 如何将参数值从视图传递到控制器?