Мне нужно установить текст внутри элемента DIV динамически. Каков наилучший подход, безопасный для браузера? У меня есть prototypejs и scriptaculous.
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
Вот как будет выглядеть функция:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
javascript
html
dom
sblundy
источник
источник
Ответы:
Я бы использовал
update
метод Prototype, который поддерживает простой текст, фрагмент HTML или любой объект JavaScript, который определяетtoString
метод.источник
$("field_name").text("new text");
Вы можете просто использовать:
источник
element.innerHTML = "<script>doSomethingMalicious()</script>";
не будет хорошей идеейelement.innerHTML = "& neither will this";
Обновлено для всех, кто читает это в 2013 году и позже:
Этот ответ имеет много SEO, но все ответы сильно устарели и зависят от библиотек, чтобы делать то, что все современные браузеры делают из коробки.
Чтобы заменить текст внутри элемента div, используйте Node.textContent, который предоставляется во всех текущих браузерах.
источник
textContent
это лучший методinnerHTML
: он быстрее, безопаснее и более уместен, когда не намеренно пытается вставить HTML-разметку.Преимущества этого:
Если бы я собирался использовать библиотеку javascript, я бы использовал jQuery и сделал бы это:
Обратите внимание, что комментарий @AnthonyWJones является правильным: «field_name» не является особенно описательным идентификатором или именем переменной.
источник
Одна из замечательных особенностей Prototype -
$('field_name')
это то же самое, что иdocument.getElementById('field_name')
. Используй это! :-)Ответ Джона Топли с использованием
update
функции Prototype - еще одно хорошее решение.источник
$
ищет элемент по идентификатору. Это не на основе селекторов, как JQuery. api.prototypejs.org/dom/dollarБыстрый ответ заключается в использовании innerHTML (или метода обновления прототипа, который почти идентичен). Проблема с innerHTML в том, что вам нужно экранировать назначаемый контент. В зависимости от ваших целей вам нужно будет сделать это с другим кодом ИЛИ
в IE: -
в ФФ: -
(На самом деле FF имеют следующий код)
Теперь я могу просто использовать innerText, если вам нужна максимально широкая поддержка браузера, тогда это не полное решение, но и не использует innerHTML в сыром виде.
источник
Если вы действительно хотите, чтобы мы просто продолжили с того места, где вы остановились, вы можете сделать:
источник
nodeValue также является стандартным свойством DOM, которое вы можете использовать:
источник
источник
Если вы склонны начать использовать много JavaScript на своем сайте, jQuery сделает игру с DOM чрезвычайно простой.
http://docs.jquery.com/Manipulation
Делает это так же просто, как: $ ("# field-name"). Text ("Некоторый новый текст.");
источник
Используйте innerText, если вы не можете принять структуру - Используйте Text # data для обновления существующего текста Performance Test
источник
источник
Вот простой способ jQuery :
источник
В HTML вставьте это
В JavaScript положи это
источник