РЕДАКТИРОВАТЬ: Это было написано в 2014 году. Возможно, вы больше не заботитесь о IE8 и можете забыть об использовании innerText
. Просто используйте textContent
и покончите с этим, ура.
Если вы являетесь тем, кто предоставляет текст, а часть текста не предоставлена пользователем (или другим источником, который вы не контролируете), тогда настройка innerHTML
может быть приемлемой:
// * Fine for hardcoded text strings like this one or strings you otherwise
// control.
// * Not OK for user-supplied input or strings you don't control unless
// you know what you are doing and have sanitized the string first.
document.getElementById('myspan').innerHTML = 'newtext';
Однако, как отмечают другие, если вы не являетесь источником какой-либо части текстовой строки, использование innerHTML
может подвергнуть вас атакам внедрения контента, таким как XSS, если вы не будете осторожны, чтобы сначала правильно очистить текст. 1012 *
Если вы используете ввод от пользователя, вот один из способов сделать это безопасно, также поддерживая кросс-браузерную совместимость:
var span = document.getElementById('myspan');
span.innerText = span.textContent = 'newtext';
Firefox не поддерживает innerText
, а IE8 не поддерживает textContent
, поэтому вам нужно использовать оба, если вы хотите поддерживать кросс-браузерную совместимость.
А если вы хотите, чтобы избежать повторных выпадений (вызванных innerText
), где это возможно:
var span = document.getElementById('myspan');
if ('textContent' in span) {
span.textContent = 'newtext';
} else {
span.innerText = 'newtext';
}