Как обновить проанализированное значение XML

#javascript #html #ajax #xml #dom

#javascript #HTML #ajax #xml #dom

Вопрос:

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

 var x = xml.responseXML;
var v1 = document.getElementById("sid");
alert(x.getElementsByTagName("ID")[0].childNodes[0].nodeValue);
v1.innerText = x.getElementsByTagName("ID")[0].childNodes[0].nodeValue;
  

У меня также есть вопрос о том, как я могу разрешить редактирование / выделение узла?

Комментарии:

1. have a problem where the value I'd like to see updated doesn't get updated. что вы имеете в виду под этим

2. @zero298 правильно, я допустил ошибку, изменил на getElementById и все та же проблема.

3. @srknzl я создал элемент td с именем sid, в настоящее время он пуст, но мне нужно, чтобы он отображал хотя бы первый элемент. сначала я произвел синтаксический анализ, и в соответствии с тем, что я проанализировал, мне нужно изменить v1 (sid)

4. v1.innerText = "foobar" Работает? Работают ли какие-либо обновления для каких-либо узлов вообще?

Ответ №1:

Если nodeValue есть null , установка его значения не имеет никакого эффекта (из документов). Однако вы можете изменять содержимое XML другими способами, например .innerHTML , .innerText .value и другими. Пример с .innerHTML :

 // creates a Document, as in XMLHttpRequest.responseXML
const docText = `
<!DOCTYPE html>
<body>
  <div>Hello</div>
  <div>World</div>
</body>`;
const doc = (new DOMParser()).parseFromString(docText, 'application/xml');

// setting nodeValue over null has no effect...
console.log(doc.getElementsByTagName('div')[0].nodeValue);
doc.getElementsByTagName('div')[0].nodeValue = 'Bye';
console.log(doc.getElementsByTagName('div')[0].nodeValue);

// ...but you can modifies the XML in different ways
console.log(doc.getElementsByTagName('div')[0].innerHTML);
doc.getElementsByTagName('div')[0].innerHTML = 'Bye';
console.log(doc.getElementsByTagName('div')[0].innerHTML);