Ciao ragazzi!
Come da titolo: ho questo script che compie le seguenti operazioni:
- ottiene con una richiesta ajax un file xml contenente informazioni
- con queste popola una tabella con metodi DOM
- una volta finito di popolare la tabella richiama il metodo con un timeout impostato ad un secondo
Anche se imposto il timeout a 5 secondi, dopo un tot di esecuzioni mi si pianta la CPU.
Vi prego aiutatemi perchè sono due giorni che cerco di capire cosa c'è che non va e ormai mi sta scoppiando la testa!! Grazie mille a tutti comunque
codice:function drawWarsTable() { /* popolo la tabella con i dati indicati in warslist.xml */ /* leggo prima di tutto la lista delle guerre */ xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { response = xmlhttp.responseXML; wars = response.getElementsByTagName("war"); //ottengo il nodo della tabella table = document.getElementById("wars_list_table"); /* DISTRUGGO E RICREDO IL NODO TBODY CHE CONTIENE LE RIGHE DELLA TABELLA */ /* DISTRUZIONE */ tbody = document.getElementById("wars_list_tbody"); if(tbody) tbody.parentNode.removeChild(tbody); /* CREAZIONE */ tbody = document.createElement("tbody"); tbody.id = "wars_list_tbody"; // lo inserisco prima del tfoot table.insertBefore(tbody, table.childNodes[2]); // adesso creo un ciclo for che mi scorre tutte le guerre presenti nel file for(counter=0; counter<response.getElementsByTagName("warslist")[0].getAttribute("number"); counter++) { // per ogni guerra creo 1 riga nella tabella riga = document.createElement("tr"); riga.setAttribute("onclick", "selectRow(evt);"); // per ogni riga creo 7 colonne con gli attributi della guerra /* wid */ colonna0 = document.createElement("td"); colonna0.innerHTML = wars[counter].getAttribute("wid"); /* nome guerra */ colonna1 = document.createElement("td"); colonna1.innerHTML = wars[counter].getAttribute("warname"); /* giocatori */ colonna2 = document.createElement("td"); colonna2.innerHTML = wars[counter].getAttribute("playing") + "/" + wars[counter].getAttribute("players"); /* missioni */ colonna3 = document.createElement("td"); colonna3.innerHTML = wars[counter].getAttribute("missions"); /* unità iniziali */ colonna4 = document.createElement("td"); colonna4.innerHTML = wars[counter].getAttribute("starting_units"); /* valore carte */ colonna5 = document.createElement("td"); colonna5.innerHTML = wars[counter].getAttribute("cards_value"); /* lingua */ colonna6 = document.createElement("td"); colonna6.innerHTML = wars[counter].getAttribute("language"); /* privata */ colonna7 = document.createElement("td"); colonna7.innerHTML = wars[counter].getAttribute("password"); /* turni giocati*/ colonna8 = document.createElement("td"); colonna8.innerHTML = wars[counter].getAttribute("turns"); riga.appendChild(colonna0); riga.appendChild(colonna1); riga.appendChild(colonna2); riga.appendChild(colonna3); riga.appendChild(colonna4); riga.appendChild(colonna5); riga.appendChild(colonna6); riga.appendChild(colonna7); riga.appendChild(colonna8); tbody.appendChild(riga); } setTimeout("drawWarsTable()", 1000); } } xmlhttp.open("GET", "warslist.xml", true); xmlhttp.send(); }


Rispondi quotando