javascript - 使用 JavaScript 保留代码片段区域中的格式

标签 javascript html

我正在尝试创建自己的代码片段区域,作者可以在 code block 内编写纯 html,该 block 将自动转换为文本。其工作原理如下所示:

https://jsfiddle.net/mtdrdvaw/2/

但是,一旦将元素转换为文本,元素的换行符就不会保留。 我希望 HTML 到文本转换后格式保持不变。

这可能吗?我怎样才能实现这一目标?

这是我的代码片段标记:

<code class="code-snippet">
  <div class="item">test</div>
  <div class="item">test1</div>
  <div class="item">test2</div>
</code>

这是脚本:

var codeSnippets = document.getElementsByClassName('code-snippet'),
    length = codeSnippets.length,
    i;

for (i = 0; i < length; i++) {

  var code = codeSnippets[i].innerHTML,
      node = document.createTextNode(code);

  codeSnippets[i].innerHTML = '';
  codeSnippets[i].appendChild(node);
}

编辑:由于我不清楚,我查看了 sampprecode 但没有他们中的一些人做了我希望他们做的事。我希望该区域使用我自己的填充,并看起来像在作者的代码编辑器中编写的那样。例如,仅使用 pre 会给它一个我不想要的可笑的空白。

最佳答案

您需要使用:

white-space: pre;

片段

var codeSnippets = document.getElementsByClassName('code-snippet'),
    length = codeSnippets.length,
    i;

for (i = 0; i < length; i++) {
  
  var code = codeSnippets[i].innerHTML,
      node = document.createTextNode(code);
  
  codeSnippets[i].innerHTML = '';
  codeSnippets[i].appendChild(node);
}
.code-snippet {
  display: block;
  width: 100%;
  height: 100px;
  padding: 15px;
  border: 2px solid lightgrey;
  background-color: #15181F;
  color: white;
  white-space: pre;
}
<code class="code-snippet">
  <div class="item">test</div>
  <div class="item">test1</div>
  <div class="item">test2</div>
</code>

fiddle :https://jsfiddle.net/cgoe2ptf/

关于javascript - 使用 JavaScript 保留代码片段区域中的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32666814/

相关文章:

javascript - CKEDITOR 小部件拖放到所需元素中

javascript - 基于上下文的 getElementById 比原生 getElementById 慢 1000 倍。像 sizzle 这样的选择器引擎使用更聪明的策略吗?

html - 悬停时子菜单未正确显示

css - 将列表项中的 div 居中

javascript - 删除位于特定字符串之间的字母

javascript - 是否可以每行绘制日期?

javascript - 仅通过 Html 文件输入接受 csv 文件

javascript - 将 getElementById 切换为 ClassName 以创建弹出窗口不起作用

javascript - jQuery 表单提交失败

javascript - OnMouseDown 在散点图中多次触发