Как я заменяю текст в элементе отделения?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

160
задан mikemaccana 5 May 2015 в 23:28
поделиться

10 ответов

Я использовал бы Прототип update метод, который поддерживает простой текст, отрывок HTML или любой объект JavaScript, который определяет toString метод.

$("field_name").update("New text");
47
ответ дан John Topley 23 November 2019 в 21:27
поделиться

Можно просто использовать:

fieldNameElement.innerHTML = "My new text!";
245
ответ дан Community 23 November 2019 в 21:27
поделиться

function showPanel(fieldName) {
  var fieldNameElement = document.getElementById("field_name");
  while(fieldNameElement.childNodes.length >= 1) {
    fieldNameElement.removeChild(fieldNameElement.firstChild);
  }
  fieldNameElement.appendChild(fieldNameElement.ownerDocument.createTextNode(fieldName));
}

преимущества выполнения его этот путь:

  1. Это только использует DOM, таким образом, техника является портативной на другие языки и не полагается на нестандартное имя поля innerHTML
  2. , мог бы содержать HTML, который мог быть предпринятым нападением XSS. Если мы знаем, что это - просто текст, мы должны создавать текстовый узел, вместо того, чтобы иметь браузер анализируют его для HTML

, Если бы я собирался пользоваться библиотекой JavaScript, я использовал бы jQuery и сделал бы это:


  $("div#field_name").text(fieldName);

Примечание, что @AnthonyWJones' комментарий корректен: "field_name" не является особенно описательным идентификатором или именем переменной.

75
ответ дан Community 23 November 2019 в 21:27
поделиться
$('field_name').innerHTML = 'Your text.';

Одна из изящных функций Прототипа - то, что $('field_name') делает то же самое как document.getElementById('field_name'). Используйте его!:-)

ответ John Topley с помощью Прототипа update функция является другим хорошим решением.

17
ответ дан ceejayoz 23 November 2019 в 21:27
поделиться

Быстрый ответ должен использовать innerHTML (или метод обновления прототипа который в значительной степени то же самое). Проблема с innerHTML - Вы, должен выйти из присваиваемого содержания. В зависимости от Ваших целей необходимо будет сделать это с другим кодом, ИЛИ

в IE:-

document.getElementById("field_name").innerText = newText;

в FF:-

document.getElementById("field_name").textContent = newText;

(На самом деле FF имеют следующий подарок в кодом)

HTMLElement.prototype.__defineGetter__("innerText", function () { return this.textContent; })

HTMLElement.prototype.__defineSetter__("innerText", function (inputText) { this.textContent = inputText; })

Теперь, я могу просто использовать innerText, если Вам нужна самая широкая поддержка браузера тогда, это не полное решение, но ни один не использует innerHTML в сырых данных.

15
ответ дан AnthonyWJones 23 November 2019 в 21:27
поделиться

Если Вы действительно хотите, чтобы мы только продолжили, где Вы кончили, Вы могли сделать:

if (fieldNameElement)
    fieldNameElement.innerHTML = 'some HTML';
6
ответ дан Milan Babuškov 23 November 2019 в 21:27
поделиться

Если Вы склонны начать использовать много JavaScript на Вашем сайте, jQuery делает игру с чрезвычайно простым DOM.

http://docs.jquery.com/Manipulation

Делает его столь же простым как: $ (" #field-name") .text ("Некоторый новый текст".);

1
ответ дан Steve Perks 23 November 2019 в 21:27
поделиться
function showPanel(fieldName) {
  var fieldNameElement = document.getElementById(field_name);

  fieldNameElement.removeChild(fieldNameElement.firstChild);
  var newText = document.createTextNode("New Text");
  fieldNameElement.appendChild(newText);
}
0
ответ дан Black Squirrel 23 November 2019 в 21:27
поделиться

Вот простой способ jQuery :

var el = $('#yourid .yourclass');

el.html(el.html().replace(/Old Text/ig, "New Text"));
0
ответ дан 23 November 2019 в 21:27
поделиться

nodeValue также является стандартным свойством DOM, которое вы можете использовать:

function showPanel(fieldName) {
  var fieldNameElement = document.getElementById(field_name);
  if(fieldNameElement.firstChild)
    fieldNameElement.firstChild.nodeValue = "New Text";
}
4
ответ дан 23 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: