Вопрос по javascript, dynamic, whitespace, dom – Как сохранить пробелы в динамически добавленном элементе DOM JavaScript без использования CSS?

4

При добавлении текста с небольшими пробелами, добавляемыми к нему для выравнивания, пробел обрезается (пробел добавляется в c #, поэтому к моменту, когда он попадает в интерфейс Javascript, его нельзя редактировать -it would be nice to just use some CSS to do this but it is not an option).

Вот что я попробовал до сих пор:

<code><div id="testDiv"></div>
<script type="text/javascript">
 var zlp = document.getElementById("testDiv");
 zlp.innerHTML = "hello                hello";
 var zzz = document.createTextNode("hello                hello");
 zlp.appendChild(zzz);
</script>
</code>

Оба из которых производятhello hello.

Возможный дубликатJavascript Removing Whitespace When It Shouldn't? DanM7
Попробуйте что-то вродеfoo.innerHtml = 'bla bla'.replace(' ', '&nbsp;') elclanrs

Ваш Ответ

4   ответа
0

используйте html-тег «pre»

Пример:

<pre>
A line
   A line with indent
</pre>

результат:

A line
   A line with indent
15

Пробельные символы обычно свернуты в HTML (по умолчанию).

Вы можете заменить его на&nbsp; юридическое лицо:

var text = text.replace(/\s/g, '&nbsp;');

\s будет соответствовать любому пробелу, например пробелу, символу табуляции и новой строке. Если вы хотите заменить только пробел, используйте/ /g вместо.

Другие варианты, которые избегают манипуляции со строками:

Put the text in a pre element. Set the CSS 2 white-space property to pre as @Esailija pointed out. You can always add CSS properties dynamically to elements, they don't have to be specified in a style sheet.
@FelixKling -var pr = document.createElement("pre"); pr.innerHTML = "hello hello"; zlp.appendChild(pr); работал. Спасибо! Travis J
как кто-то сказал ниже, OP - & gt; & quot; Css in not the option & quot;
также, строго говоря, \ s! == & amp; nbsp; '. Только для записи.
ну не всегда, вы можете использовать CSS какwhite-space: pre;
@Esailija: Хороший вопрос ...
0

то же самое произойдет, если вы введете это вручную в HTML-документе. Вам нужно заменить пробелы & amp; nbsp;

zlp.innerHTML = "hello                hello".replace( / /g, "&nbsp;" );
0

zlp.innerHTML = "hello&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hello";

Как и все остальные, только что сказал.

Ты имел ввиду&nbsp;?
да, это была большая опечатка

Похожие вопросы