2015-09-19 39 views
0

我想創建自己的代碼片段區域,作者可以在code塊內編寫純html,該塊將自動轉換爲文本。這個工程是這裏演示:使用JavaScript在代碼片段區域中保留格式

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就給了它一個我不想要的荒謬的空白空間。

+0

@Oka我不明白downvote,也不明白你的意思。我看了很多選項,但沒有一個按照我想要的方式工作,因爲格式化不是我想要的。 – Chrillewoodz

回答

2

您需要使用:

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>

小提琴:https://jsfiddle.net/cgoe2ptf/

+1

正是我在找的東西,但是有沒有辦法去除這種可笑的間距?我希望它只使用我自己的填充。 – Chrillewoodz

+0

@Chrillewoodz您的頂部有一個換行符,左側有空格。請使用'trim()'擺脫它們。 –

+0

試過了,問題是沒有被刪除的元素之間的換行符。我應該刪除它們,如果有的話,它不會再換行並縮進。不確定這是否可行,您怎麼看? – Chrillewoodz

相關問題