【问题标题】:Adding a line break or line-wrap in JavaScript not working as anticipated在 JavaScript 中添加换行符或换行符未按预期工作
【发布时间】:2020-09-06 10:08:16
【问题描述】:

我正在使用这条线:

 

 userResultMapOne = "But your value of " + userInputMapOne + " \nis too high for this scenario."

我尝试了多种不同的方式来使用 \n 来换行。实际上,我真正想要的是让文本在移动设备上换行到下一行,但由于一些奇怪的原因,文本刚刚离开屏幕(它正在以 Bootstrap 模式显示)。

什么是允许 JS innerHTML DOM 修改包裹在小型设备上的正确方法,尤其是在 Bootstrap 模式中?

*编辑 - 我做了更多调查,但我仍然不知道为什么两个输出之一是正确的。

这是两个检查输出。第一个显示没有换行,但第二个正确地显示了换行。谁能看出这是为什么?

【问题讨论】:

  • \n 将在 HTML 上被修剪(至少如果您不使用 <pre>),请尝试使用 <br>
  • 我实际上也这样做了...同样没有用。但是在大屏幕上,一切都按预期显示,但在移动设备上,代码似乎没有换行(虽然在 Chrome Inspect 中,它确实......但当我在实际的移动设备上显示时,它没有)。
  • 尝试使用css属性:word-wrap: break-word
  • @Knick 谢谢 - 我试过了,但没用 :(
  • 你能在这里做一个小小提琴吗?在此之前,请尝试在其父级上使用 css 属性 white-space: pre

标签: javascript twitter-bootstrap word-wrap


【解决方案1】:

而不是 \n 替换

【讨论】:

  • 但这不适用于所有设备,我只想在小型设备上进行包装。大型设备运行良好。
【解决方案2】:

您可能正在使用innerHTML 插入字符串,您应该使用innerText

const userInputMapOn = '[USER_VALUE]';
const userResultMapOne = "But your value of  "+ userInputMapOn + "\nis too high for this scenario";

const p1 = document.querySelector('#innerHTML');
const p2 = document.querySelector('#innerText');

p1.innerHTML = '_ With innerHTML : ' + userResultMapOne;
p2.innerText = '_ With innerText : ' + userResultMapOne;
<p id="innerHTML"></p>
<p id="innerText"></p>

Template literals

const userInputMapOn = '[USER_VALUE]';
const userResultMapOne = `But your value of  ${userInputMapOn} \nis too high for this scenario`;

const p = document.querySelector('p');

p.innerText = userResultMapOne;
&lt;p&gt;&lt;/p&gt;

编辑:

如果您需要将 HTML 与字符串一起插入,只需将 \n 替换为 &lt;br&gt; 并使用 innerHTML,如下所示:

const userInputMapOn = '[USER_VALUE]';
const userResultMapOne = `But your value of  <b>${userInputMapOn}</b> \nis too high for this scenario`;

const p = document.querySelector('p');

p.innerHTML = userResultMapOne.replace(/(?:\r\n|\r|\n)/g, '<br>');
&lt;p&gt;&lt;/p&gt;

【讨论】:

  • 我正在使用innerHTML,我会看看这个。谢谢。
  • 编辑了我的答案...添加了替换方法,以防您需要将 HTML 与字符串一起添加。
  • 我有点奇怪。我可以让它在我的五张地图中的一张上工作,但不能在所有五张地图上工作,我似乎看不出有什么区别。 MapOne 不起作用,但 MapTwo 可以。我正在寻找不同的地方和我拥有的东西,但我看不到任何东西(还)。
  • 我添加了一些图像,显示 Firefox 中的检查输出,我可以在其中复制问题。
  • 图像不能说明太多...发布完整的代码 HTML 和 js 可以帮助您了解您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
相关资源
最近更新 更多