2014-04-11 76 views
0
呈現在呈現的內容換行

小提琴這裏 - http://jsfiddle.net/kQ3eJ/3/如何讓JS使用的innerHTML

var string = "This is a & string that has \n new lines in it\u0027s body"; 

//does not do the newline or unicode 
document.getElementById("insertJavascript").innerHTML = string; 

//does do the newline and unicode 
document.getElementById("insertJavascriptWithPre").innerHTML = '<pre>' + string + '</pre>'; 

//but if i get the string from the HTML to begin with it doesn't work 
var htmlString = document.getElementById("htmlWithNewline").textContent; 
document.getElementById("insertJsHtmlWithNewline").textContent = htmlString; 

基本的網頁有一個元素我想格式化這個它的innerHTML中有換行符(數據來自一個JSON) 數據在前端更清晰

正如您在小提琴中看到的那樣 - 在javascript工作中輸入換行符(\ n),但是如果換行符是來自innerHTML的字符串的一部分,沒有正確格式化。

有沒有辦法在字符串中「撤銷」換行符?

好了,所以我試圖字符串替換「\ n」和「\ n」和「\ r」和「\ r」和這似乎已經奏效

var what = htmlString.replace('\\n','\n'); 
// what = what.replace('\\u','\u'); 
what = what.replace('\\r','\r'); 
document.getElementById("a").innerHTML = '<pre>' + what + '</pre>'; 

,但它的失敗上的Unicode替換 - 我可能必須將整個unicode塊替換爲一個?

+0

在簡單的話,你想休息一下標籤,以取代換行符 – adeneo

+0

不,這不是我想做的事,如果你看了小提琴,你會看到我想這是a


                            
    wyu
                                
                            
                        
                    

回答

0

其實它看起來像JSON.parse()來將取消轉義所有\ n \ r和\ u和允許它在<pre></pre>標籤正確格式化

document.getElementById("foo").innerHTML = '<pre>' + JSON.parse('"' + htmlString + '"') + '</pre>'; 
0

沒有必要使用JSON.parse爲這個。默認Javascript會將\n視爲新行。

請參考以下問題。

JavaScript string with new line - but not using \n

+0

你有機會看小提琴嗎? JS將JS字符串視爲換行符,但如果通過innerHTML從網頁中提取字符串,它會將換行符識別爲轉義換行符(文字\ n) – wyu