2015-11-29 3 views
0

Есть ли способ написать текст (и не декодировать специальные символы) с помощью Javascript? Я пробовал document.write(), но он преобразует персонажи, такие как &, обратно в &, а .text() - JQuery держит &.Напишите чистый текст, используя Javascript?

Мой код

<script>document.write('&amp;');</script> 

Что возвращает

& 

То, что я хочу, чтобы вернуть

&amp; 

ответ

3

Просто конвертировать все & в &amp; и он должен работать для вас:

stringToBeWritten = "Hi&Hi - Hi&amp;Hi"; 
stringToBeWritten = stringToBeWritten.replace(/(&)/gi, "&amp;"); 
document.write(stringToBeWritten); 

<script> 
 
    stringToBeWritten = "Hi&Hi - Hi&amp;Hi"; 
 
    stringToBeWritten = stringToBeWritten.replace(/(&)/gi, "&amp;"); 
 
    document.write(stringToBeWritten); 
 
</script>

пс: Не используйтеdocument.write(), как это не хорошо. См Why is document.write considered a "bad practice"?

Решение 2

Мы можем фактически использовать сам браузер, чтобы это произошло.

function escapeStuff (unescaped) { 
 
    DiV = document.createElement("div"); 
 
    DiV.innerText = unescaped; 
 
    return DiV.innerHTML; 
 
}
<input type="text" id="un" value="& <>" /> <input onclick="res.innerText = escapeStuff (un.value);" value="Escape it!" type="button" /> 
 
<div id="res"></div>

+1

спасибо, это сделал работу, и я приму это через 15 минут, когда это позволит мне. Также, что я должен использовать вместо 'document.write()'? – Jaketr00

+0

Используйте 'theID.innerHTML' или 'ID.innerText' или' theID.textContent'. –

+0

Как реализация document.write отличается в каждом браузере? – JJJ

3

На самом деле, просто использовать element.textContent вместо document.write :)

Например, проверьте this JSFiddle link или фрагмент кода ниже:

document.getElementById('myspan').textContent= 'Click &lt;HERE&gt;'; 
 
document.write('Click &lt;HERE&gt;');
With element.textContent: <span id="myspan"></span> 
 
<br /> 
 
With document.write():


Update: заменить использование innerText на textContent как предложил Леон Адлера в комментариях.

+0

По-прежнему отображается символ '<' вместо '<'. – Jaketr00

+1

Нет, только с 'document.write()', который я оставил здесь для сравнения, но ** не ** с 'element.innerText' :) – ccjmne

+0

' innerText' ** нестандартно ** (Internet Explorer) свойство и не поддерживалось в Firefox до версии 45. Использование * textContent * было бы рекомендовано. –

0

Существует разница между html и текст. Вы хотите установить текст:

var myText = 'A &amp; B'; 

// Setting HTML: Result text will be "A & B" 
document.write(myText); // <- don't use document.write! 
jQuery('#myElement').html(myText); 
myElement.innerHTML = myText; 

// Setting Text: Result text will be "A &amp; B" 
document.write('A &amp; B'.replace(/&/g, '&amp;').replace(/</g, '&lt;')); // <- don't use document.write! 
jQuery('#myElement').text(myText); // removes all children and sets the text of the element 
myElement.textContent = myText; // sets the text of the element 
myElement.innerText = myText; // removes all children and sets the text of the element 

Обратите внимание, что document.write является обычно плохая идея, так как он работает только тогда, когда ваша страница не была загружена полностью, и с помощью document.write позже (например, при нажатии кнопки) будет замените весь контент вашей страницы.

Я также могу посоветовать использовать innerText. Это нестандартное свойство, которое было определено Internet Explorer, а затем адаптировано Chrome, но не поддерживается в Firefox (это прекрасно, поскольку это не соответствует стандартам). Вместо этого вы можете использовать textContent.

Смежные вопросы