Scusate sapete dirmi come mai questo codice funziona solo su IE, mentre su firefox e crome non riesce a a leggere il dom..usando firebug diceche ce un errore su questa linea di codicecodice:var xmlDoc; function readXml() { //Carica documento XML xmlDoc = loadXML('tratte.xml'); //Elemento radice var root = xmlDoc.documentElement; nodes = childElements(root); var tratte= new Array(); var n=0; for (var i=0; i < nodes.length; i++) { var linee = childElements(nodes[i]); var colore =color_html('hex'); for ( var j = 0; j < linee.length; j++) { tratte[n]= new Array(5); document.write("Tratta:"+i+" linea:"+j+", partenza punti ( "+linee[j].childNodes[0].childNodes[0].childNodes[0].nodeValue+","+linee[j].childNodes[0].childNodes[1].childNodes[0].nodeValue+"); "); document.write("Tratta "+i+" linea:"+j+", arrivo punti ( "+linee[j].childNodes[1].childNodes[0].childNodes[0].nodeValue+","+linee[j].childNodes[1].childNodes[1].childNodes[0].nodeValue+"); "); document.write(" "); tratte[n][0]=linee[j].childNodes[0].childNodes[0].childNodes[0].nodeValue; tratte[n][1]=linee[j].childNodes[0].childNodes[1].childNodes[0].nodeValue; tratte[n][2]=linee[j].childNodes[1].childNodes[0].childNodes[0].nodeValue; tratte[n][3]=linee[j].childNodes[1].childNodes[1].childNodes[0].nodeValue; tratte[n][4]=colore; //linea,partenza,punto,figliovalore,value n++; } } // document.write("inserimento riuscito"); // for ( var i = 0; i < n; i++) { // document.write(" Riga: "+i+" stampata "); // for ( var j = 0; j < 5; j++) { // document.write(tratte[i][j]+", "); // } // // // } // document.write(" stampa riuscita"); return tratte; } function loadXML(xmlfile) { //MS InternetExplorer if (window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } // Mozilla, Firefox, Opera else if (document.implementation && document.implementation.createDocument) { var parser = new DOMParser(); xmlDoc = parser.parseFromString(xmlfile, "text/xml"); } else { xmlDoc = false; } if(xmlDoc) { xmlDoc.async = false; xmlDoc.load(xmlfile); } return xmlDoc; } function childElements(node) { var elements = new Array(); for (var i=0; i < node.childNodes.length; i++) { if(node.childNodes[i].nodeType == 1) { elements.push(node.childNodes[i]); } } return elements; } function color_html(format,opacity){ if(format == 'hex'){ var color = '#'; var simble = '0123456789ABCDEF'.split(''); for(var i=0; i<=5; i++){ color += simble[Math.round(Math.random() * 15)]; } return color; } else if(format == 'dec' && opacity == 0){ var color = 'rgb('; for(var i=0; i<=2; i++){ color += Math.round(Math.random() * 254); if(i<2){color += ',';} } return color += ')'; } else if(format == 'dec' && opacity != 0){ var color = 'rgba('; for(var i=0; i<=2; i++){ color += Math.round(Math.random() * 254) + ','; if(i==2){ color += opacity + ')' } } return color; } }
invece scriverendo in questo modo:codice:TypeError: linee[j].childNodes[0].childNodes[0] is undefined file:///C:/Users/Orphen/workspace/Test/readxml.js Line 23su firefox e chrome funziona perfettamente avete una soluzione?codice:// xml = '<?xml version="1.0" encoding="UTF-8"?><tratte><tratta><linea><partenza><puntoA>39.358143</puntoA><puntoB>16.225803</puntoB></partenza><arrivo><puntoA>39.2982629</puntoA><puntoB>16.2537357</puntoB></arrivo></linea><linea><partenza><puntoA>39.3545651</puntoA><puntoB>16.2413744</puntoB></partenza><arrivo><puntoA>39.3910949</puntoA><puntoB>16.2389759</puntoB></arrivo></linea></tratta><tratta><linea><partenza><puntoA>39.3317751</puntoA><puntoB>16.1839028</puntoB></partenza><arrivo><puntoA>39.329862</puntoA><puntoB>16.244561</puntoB></arrivo></linea></tratta></tratte>'; // var parser=new DOMParser(); // var xmlDoc=parser.parseFromString(xml,'text/xml');

Rispondi quotando