2015-10-18 13 views
-4

我需要替換var中的每個'\ n'與<br>標記,但我嘗試的代碼不起作用。這裏是我的榜樣,代碼:Javascript替換不工作,因爲轉義序列

例子:

你好\ n您上網嗎? \ n你是什麼意思?

應該改爲:

Hello there <br> Are you online? <br> What do you mean?

代碼:

var text = 'Hello there \n Are you online? \n What do you mean?'; 
var find = '\n'; 
var re = new RegExp(find, 'g'); 

re = text .replace(re, '<br>'); 

我在做什麼錯?

+1

你看到什麼輸出?它可以像Chrome 46期望的那樣工作。 – joews

+0

在Safari 9和最新的Fx中也能正常工作。 – Touffy

+4

我看到了 - 您正在將輸出分配給're'。你可能意思是使用另一個變量。你的意思是'text = text.replace ...'? – joews

回答

1

var text = 'Hello there \n Are you online? \n What do you mean?'; 
 
var find = '\n'; 
 
var re = new RegExp(find, 'g'); 
 

 
re = text.replace(re, '<br>'); 
 
document.write(re);

在提琴做工精細

0

你寫道:

document.findElementById 

,而不是

document.getElementById 

我認爲這是應該解決你的問題的事情之一!

0

Working Fiddle

在你的小提琴(你沒有在你原來的問題後)有幾個問題已經解決的意見。但是,問題的癥結在於 - 這會幫助我們更快地幫助您 - 是從innerHTML屬性中拉取帶有「\ n」的字符串。這些不是換行符,因爲如果你看到一個文字「\ n」而不是換行符,這意味着它已經被轉義。因此,您需要在正則表達式中使用「\\ n」,而不是「\ n」。在現代瀏覽器中使用devtool控制檯來檢查變量並捕獲錯誤。

代碼:

var el = document.getElementById("ado") 
var text = document.getElementById("ado").innerHTML; 

text = text.replace(/\\n/g, '<br>'); 

el.innerHTML = text