div.innerHTML = my_text;
上面的代碼有一個問題:呈現HTML標記。我想要相反的行爲:我想要<b>
呈現爲字符串,而不是粗體。我也希望能夠使用「\ t」和「\ n」作爲換行符和製表符。我能做什麼?如何在使用innerHTML插入文本時阻止識別HTML標籤的div?
div.innerHTML = my_text;
上面的代碼有一個問題:呈現HTML標記。我想要相反的行爲:我想要<b>
呈現爲字符串,而不是粗體。我也希望能夠使用「\ t」和「\ n」作爲換行符和製表符。我能做什麼?如何在使用innerHTML插入文本時阻止識別HTML標籤的div?
當您應該使用div.innerText時,您正在使用div.innerHTML。
的innerText是不是跨瀏覽器的,我建議你使用像jQuery庫,所以你不要有這種類型的問題:使用jQuery
你可以寫類似
$('#you_div').text(str.replace(/\t/g," "));
替換上面將你的'\ t'替換爲「\ t」,所以你會在文本中看到\ t。
無論如何,標準似乎是屬性textContent。 以下是MDN中的一些信息。
不同的解決方案,更好地符合您需求的可能是讓文字編碼,然後用'\t'
替換
,在這個解決方案中使用innerHTML屬性來代替。
它不渲染\ t字符。 – MaiaVictor
這是因爲你的字符串有字符'\ t'執行'\ t'的regex.replace到「\\ t」,這將做到這一點。這裏是一個例子:var result = str.replace(patt1,「\\ t」);在此鏈接中:http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_t用代碼替換行搜索之前。 –
我已經這樣做了,無論是在我的網站還是在該鏈接上。它只是呈現「\ t」本身,而不是一個標籤... – MaiaVictor
爲了防止HTML被渲染,只是逃避它:
div.innerHTML = my_text.replace(/</g,"<");
將仍然允許HTML實體,如é
被解析。如果你也想這些出現原料,這個標籤的行的末尾:
.replace(/&/g,"&");
或者,嘗試這種「乾淨」的選項:
while(div.firstChild) div.removeChild(div.firstChild);
div.appendChild(document.createTextNode(my_text));
的innerText是不是跨瀏覽器。它也不會呈現「\ t」製表符。我要求未來的選民在判斷之前真正閱讀整個問題。 – MaiaVictor
提到'innerText'在哪裏?此外,渲染製表符是「替換」操作的一個問題。 –
(createTextNode也不渲染製表符字符) – MaiaVictor