2014-09-02 2 views
0

У меня есть функция javascript, которая принимает строку xml, возвращаемую JSP, и анализирует ее и должна записать ее на страницу. Код:innerHTML не записывается на страницу

function renderResults() { 
alert("renderResults()"); 
element = document.getElementById("results").innerHTML; 
var xmlString = '<%=session.getAttribute("directoryInfo")%>'; 

if (window.DOMParser) { 
    parser = new DOMParser(); 
    xmlDoc = parser.parseFromString(xmlString, "text/xml"); 
} else { 
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async = false; 
    xmlDoc.loadXML(xmlString); 
} 
var x = xmlDoc.getElementsByTagName("person"); 
for (var i = 0; i < x.length; i++) { 
    console.log(x[i].getElementsByTagName("firstname")[0].childNodes[0].nodeValue); 
    console.log(x[i].getElementsByTagName("lastname")[0].childNodes[0].nodeValue); 
    element += '<p>' + x[i].getElementsByTagName("firstname")[0].childNodes[0].nodeValue + 
     " " + x[i].getElementsByTagName("lastname")[0].childNodes[0].nodeValue + '</p>'; 
    console.log(element); 
} 
} 

По какой-то причине он не будет писать. renderResults() функция вызывается после того, как форма отправлена:

var formData = { 
    "field1": field1, 
    "oper1": oper1, 
    "value1": value1, 
    "field2": field2, 
    "oper2": oper2, 
    "value2": value2, 
    "field3": field3, 
    "oper3": oper3, 
    "value3": value3 
}; 
jQuery.post("<%=request.getRequestURL().toString()%>getInfo.jsp", formData, function(response) { 
    alertHere(response) 
}); 

renderResults(); 

Я знаю, что функция renderResults работает, потому что все мои console.logs будут выводить правильные данные.

Console.log(element) на конце выводит правильный html, который должен быть записан на страницу.

Любые предложения? Я относительно новичок в javascript, поэтому я пытаюсь выяснить, как и когда вещи визуализируются.

Я не уверен, что это имеет какое-либо отношение к моей проблеме или нет.

+4

Вы не назначаете обратно 'innerHTML' в любом месте. FYI: присвоение нового значения переменной или свойству ** никогда ** не изменяет значение другой переменной или свойства (исключения: глобальная область, 'с' и модные вещи, такие как геттеры). –

+0

такой же здесь, я не вижу его нигде –

ответ

3

element = document.getElementById("results").innerHTML; копирует струнные от innerHTML к element.

Он не создает ссылку.

Обновление значения element не обновит значение innerHTML

Для этого необходимо присвоить новое значение обратно к innerHTML.

+0

, чтобы скопировать ссылку, которую вы хотели бы использовать element = document.getElementById ("results"); затем использовать element.innerHTML = "something"; – David

Смежные вопросы