在 Javascript 中使用跨度和符号更改 HTML [重复]

Posted

技术标签:

【中文标题】在 Javascript 中使用跨度和符号更改 HTML [重复]【英文标题】:Changing HTML with spans and symbols in Javascript [duplicate] 【发布时间】:2021-06-22 11:42:15 【问题描述】:

我有一些 html,当调用一个函数时,我想更改为使用 span 的 div 中的文本。这个想法是一种定制的警报。我正在尝试使用 .innerHTML,但我想要更改的内容既有引号又有跨度。有没有办法让我更新这个?

当前 HTML:

<div id="messageBox" class="messageBox">
     <div id="picture"></div>
     <div id="messageArea">"I need to update this <span class="keyWord">code</span> and keep the 
          quotations and keywords!"
     </div>
</div>

这显示了一个带有图片的框

“我需要更新这个代码并保留引用和 关键字!”

我目前的 javascript 是:

alertChange = document.getElementById("messageArea");
alertChange.innerHTML = ""This <span class="keyWord">code</span> needs to change!"";

它不允许我添加额外的引号或 span 元素。

生成的文本应该是

“此代码需要更改!”

【问题讨论】:

Escape quotes in JavaScript 不正确。那是关于转义标记(属性)中的引号而不是转义要在字符串中使用的引号。 【参考方案1】:

方法 1 - 反斜杠转义

使用反斜杠 \ 字符转义 HTML 字符串中的双引号:

alertChange = document.getElementById("messageArea");
alertChange.innerHTML = "\"This <span class=\"keyWord\">code</span> needs to change!\"";
<div id="messageBox" class="messageBox">
     <div id="picture"></div>
     <div id="messageArea">"I need to update this <span class="keyWord">code</span> and keep the 
          quotations and keywords!"
     </div>
</div>

延伸阅读:String - JavaScript | MDN#Escape Notation


方法 2 - 使用模板字符串

通过将字符串封装在反引号字符中,将其声明为模板文字:

alertChange = document.getElementById("messageArea");
alertChange.innerHTML = `"This <span class="keyWord">code</span> needs to change!"`;
<div id="messageBox" class="messageBox">
     <div id="picture"></div>
     <div id="messageArea">"I need to update this <span class="keyWord">code</span> and keep the 
          quotations and keywords!"
     </div>
</div>

延伸阅读:Template literals (Template strings) - JavaScript | MDN


方法 3 - 单引号 (') 封装

在这种特殊情况下,由于您没有在字符串中的任何位置使用单引号,您可以通过将 HTML 字符串封装在单引号字符中来简单地声明它。 请注意,如果由于某种原因您的文本更改为包含单引号,这将中断,这将迫使您按照方法 1 中的详细说明转义它们。

alertChange = document.getElementById("messageArea");
alertChange.innerHTML = '"This <span class="keyWord">code</span> needs to change!"';
<div id="messageBox" class="messageBox">
     <div id="picture"></div>
     <div id="messageArea">"I need to update this <span class="keyWord">code</span> and keep the 
          quotations and keywords!"
     </div>
</div>

【讨论】:

所以你没有找到任何重复的?【参考方案2】:

您需要像这样使用反斜杠 \ 来“转义”特殊字符(在您的情况下为双引号)

alertChange.innerHTML = "\"This &lt;span class=\"keyWord\"&gt;code&lt;/span&gt; needs to change!\"";

【讨论】:

以上是关于在 Javascript 中使用跨度和符号更改 HTML [重复]的主要内容,如果未能解决你的问题,请参考以下文章

更改跨度文本? [复制]

如何在不使用任何图像项目符号或任何跨度标签的情况下通过 CSS 定义 OL/LI 列表中字符的颜色?

在Android中更改跨度内的文本时删除跨度

使用 CSS 更改带有复选框的跨度中的材质图标

捏和缩放 RecyclerView 布局以动画和更改布局管理器跨度计数

更改 div 中跨度的可见性和大小分为两行