2014-01-11 91 views
0
div.innerHTML = my_text; 

上面的代碼有一個問題:呈現HTML標記。我想要相反的行爲:我想要<b>呈現爲字符串,而不是粗體。我也希望能夠使用「\ t」和「\ n」作爲換行符和製表符。我能做什麼?如何在使用innerHTML插入文本時阻止識別HTML標籤的div?

+0

的innerText是不是跨瀏覽器。它也不會呈現「\ t」製表符。我要求未來的選民在判斷之前真正閱讀整個問題。 – MaiaVictor

+0

提到'innerText'在哪裏?此外,渲染製表符是「替換」操作的一個問題。 –

+0

(createTextNode也不渲染製表符字符) – MaiaVictor

回答

1

當您應該使用div.innerText時,您正在使用div.innerHTML。

的innerText是不是跨瀏覽器的,我建議你使用像jQuery庫,所以你不要有這種類型的問題:使用jQuery

你可以寫類似

$('#you_div').text(str.replace(/\t/g," ")); 

替換上面將你的'\ t'替換爲「\ t」,所以你會在文本中看到\ t。

無論如何,標準似乎是屬性textContent。 以下是MDN中的一些信息。


不同的解決方案,更好地符合您需求的可能是讓文字編碼,然後用'\t'替換&nbsp;&nbsp;&nbsp;&nbsp;,在這個解決方案中使用innerHTML屬性來代替。

+0

它不渲染\ t字符。 – MaiaVictor

+0

這是因爲你的字符串有字符'\ t'執行'\ t'的regex.replace到「\\ t」,這將做到這一點。這裏是一個例子:var result = str.replace(patt1,「\\ t」);在此鏈接中:http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_t用代碼替換行搜索之前。 –

+0

我已經這樣做了,無論是在我的網站還是在該鏈接上。它只是呈現「\ t」本身,而不是一個標籤... – MaiaVictor

2

爲了防止HTML被渲染,只是逃避它:

div.innerHTML = my_text.replace(/</g,"&lt;"); 

將仍然允許HTML實體,如&eacute;被解析。如果你也想這些出現原料,這個標籤的行的末尾:

.replace(/&/g,"&amp;"); 

或者,嘗試這種「乾淨」的選項:

while(div.firstChild) div.removeChild(div.firstChild); 
div.appendChild(document.createTextNode(my_text)); 
相關問題