我希望在变量USER_INPUT中捕获用户的文本输入,并将该变量的值用作显示在某个显示div中的多样式字符串的子字符串.但包含html标记的文本输入(如<div>)存在问题,如下面的示例所示,其中USER_INPUT的值根本不会出现在Display中,这是可以理解的,因为.innerText和.innerHTML属性的性质不同.

var USER_INPUT = "<div>";
      
document.getElementById("DISPLAY").innerHTML =  
       "<span style='color:red'>" + "User Input : " + "</span>" + 
       "<span style='color:blue'>" + USER_INPUT + "</span>";

因此,经过多次试验,出现了一个似乎在所有情况下都很有效的解决方案:

var USER_INPUT = "<div>";
    
var XDIV = document.createElement("div");
XDIV.innerText = USER_INPUT;
var A = XDIV.innerHTML;
    
document.getElementById("DISPLAY").innerHTML =  
       "<span style='color:red'>" + "User Input : " + "</span>" + 
       "<span style='color:blue'>" + A + "</span>";

The above code shows in the DISPLAY: enter image description here which is exactly what I need, that is, to be able to style the user-input independently of the first part of the string.

我的问题是我不能理解为什么上面的代码解决了这个问题.如果用户输入的字符串作为innerText传递到新的div中,并作为innerHTML检索,那么它就会奇迹般地正确地出现在显示中.我想了解这一行为背后的原因,因此任何帮助都将不胜感激. fiddle here

推荐答案

属性innerHTML返回序列化的HTML或XML.

在您的例子中,返回的字符串是&lt;div&gt;,并且可以像普通文本一样显示.

Html相关问答推荐

如何才能完成这个背景按钮

Blazor中有1像素高行的表格

如何增加行背景的宽度而不影响上面的内容?""' HTML CSS

只有一行上有溢出的CSS网格

将输入字段下方的两个按钮设置为两侧对齐

创建一个带有div和径向渐变的全宽半圆

MatSnackBar: colored颜色 不起作用

创建带有弯曲边框的水平时间线

当溢出到滚动条中时, bootstrap 按钮样式会更改

如何将CSS滤镜仅应用于背景图像

更改Angular 为17的material Select 字段的高度?

将导航项目底部边框与导航栏对齐

将精选选项的价格合并为一个价格HTML、PHP和JQuery

下划线在 Bootstrap 5 导航链接下无法正常工作

R 中的网页抓取数字?

如何使容器的大小适合其 position:absolute; 子元素的大小

CSS 中的 fingerprint scanner 动画

如何在 bootstrap 程序导航栏中居中搜索图标

使用 tailwind css 将 HTML/CSS/JS 站点转换为 React App

以 HTML 格式显示的 LaTeX 表格