Я не могу найти ответ на этот вопрос...
Проблема. Javascript копирует текст из DIV на вход (текстовое поле), не копирует &
as &
и копирует его как &
, См. Пример кода плюс.
У меня есть следующий код (на разных страницах, просто чтобы упростить все, что я здесь):
INPUT, где я хочу, чтобы текст был скопирован.
<input name="artist" id="txtArtist" type="text" placeholder="Introduce the artist" />
DIV, где текст скопирован. Эти данные заполняются из базы данных SQL.
<div id="art0"><div onclick="copyText(0)">Mumford & Sons</div></div>'
Функция, которая не работает...
function copyText(rowID){
var content = document.getElementById('art'+rowID).innerHTML.replace(/<\/?[^>]+(>|$)/g, "\n");
document.getElementById("txtArtist").value = document.getElementById('art'+rowID).innerHTML;
document.getElementById("txtArtist").value = content;
}
ОЖИДАЕМЫЙ результат внутри текстового поля: Mumford & Sons
Результат ACTUAL внутри текстового поля: Mumford & Sons
Mumford & Sons
Любая помощь, пожалуйста?
Спасибо вам всем!!
Используйте .textContent
вместо .innerHTML
:
var content = document.getElementById('art'+rowID).textContent;
Обратите внимание, что .textContent
не поддерживается IE 8 и ниже, поэтому, если вы так неудачны, .innerText
вместо этого использовать .innerText
.
var prop = 'textContent' in document.body ? 'textContent' : 'innerText',
content = document.getElementById('art'+rowID)[prop];
textContent
!!
.textContent
для FF.
textContent
вместоinnerHTML
.&
экранируются во многих случаях процедуры дезинфицировать.