#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);