erro incompreensível ao carregar xml
Olá pessoal,
Eu estou criando um sistema q vai carregar dados de um xml em javascript puxando através de ajax.
o xml veio bonitinho, inclusive posso visualizar todos os dados atraves de alert().
mas na hora de colocar na tabela não aparece.
veja parte do código:
CODE
conestxmlgridingdata("gridElement", 0, ajax.responseXML);function conestxmlgridingdata(grd, molde, xmlobj){
var cexmlgrid = document.getElementById(grd);
cexmlgrid.setAttribute("style","overflow:scroll");
switch(molde){
case 0:
var tabela = document.createElement("table");
tabela.border="0";
tabela.setAttribute("cellpadding",0);
tabela.setAttribute("cellspacing",1);
tabela.width="4600";
var titleLinha = document.createElement("tr");
titleLinha.className="psconestDefaultTableTitles";
var titleArray = new Array("Grupo", "Id", "Codigo", "Descricao", "Preco", "Ultima compra", "Ultima venda", "Quantidade", "Fornecedor", "Valor compra", "Icms de entrada", "Icms de saida", "Custo operacional", "Outros impostos", "Comissao", "Lucro", "Desconto", "Medida", "Moeda", "Alertar", "Atualizado em", "R. grupo", "R. Id", "Registrador", "Observacoes");
for(var ind = 0 ; ind < titleArray.length ; ind++){
titleCel = document.createElement("th");
titleCel.appendChild(document.createTextNode(titleArray[ind]));
titleLinha.appendChild(titleCel);
}
tabela.appendChild(titleLinha);
xmlobjshort = xmlobj.firstChild;
for(j = 0 ; j < xmlobj.firstChild.childNodes.length; j++){
outrasLinhas = document.createElement("tr");
for(var i = 0 ; i < titleArray.length ; i++){
outrasCel = document.createElement("td");
//até aqui vai bem. mas quando se trata de colocar o xml aí pronto desanda
outrasCel.appendChild(document.createTextNode(xmlobjshort.childNodes[j].childNod
es[ind] .firstChild.nodeValue));
outrasLinhas.appendChild(outrasCel);
}
tabela.appendChild(outrasLinhas);
}
while(cexmlgrid.firstChild){
cexmlgrid.removeChild(cexmlgrid.firstChild);
}
cexmlgrid.appendChild(tabela);
break;
}
}
na minha opinião a parte que interessa é aqui:
CODE
for(j = 0 ; j < xmlobj.firstChild.childNodes.length; j++){ outrasLinhas = document.createElement("tr");
for(var ind = 0 ; ind < titleArray.length ; ind++){
outrasCel = document.createElement("td");
outrasCel.appendChild(document.createTextNode(xmlobjshort.childNodes[j].childNod
es[ind] .firstChild.nodeValue));
outrasLinhas.appendChild(outrasCel);
}
tabela.appendChild(outrasLinhas);
}
essa parte do código: outrasCel.appendChild(document.createTextNode(xmlobjshort.childNodes[j].childNod
es[ind].firstChild.nodeValue));
se eu puser assim:
outrasCel.appendChild(document.createTextNode("teste"));
funciona perfeitamente,
se eu puser assim:
outrasCel.appendChild(document.createTextNode(xmlobjshort));
funciona perfeitamente, só que imprime só "XML element" na tabela.
e inclusive se eu puser,
outrasCel.appendChild(document.createTextNode(xmlobjshort.childNodes[j].childNod
es[ind]));
funciona perfeitamente até aqui. só que como eu disse aparece só "XML element".
mas se eu experimentar colocar xmlobjshort.childNodes[j].childNodes[ind].firstChild, já não funciona mais,
no entanto...
se eu colocar o código abaixo na função..
alert(xmlobjshort.childNodes[j].childNodes[ind].firstChild.nodeValue)
ele mostra o valor corretamente. estranho isso não é?
o mais estranho é que se eu colocar um alert desses antes do código:
outrasCel.appendChild(document.createTextNode("teste"));
aí nem esse funciona mais. Eu já tentei até apenas definir uma variavel simples contendo o conteudo do xml:
var xmlvalor = xmlobjshort.childNodes[j].childNodes[ind].firstChild.nodeValue;
mas a partir da variavel, o código não funciona mais.
ele aparentemente para bem nesse ponto, mas o xml está perfeito, inclusive o firefox mostra o xml corretinho.
e não só o firefox, mas se atraves do javascript percebemos que os dados estão corretos,
não entendo isso..
o que fazer?
alguém já passou por isso e pode me orientar?
Obrigado desde já
Discussão (1)
Carregando comentários...