Newsgroup: it.comp.lang.javascript
Titolo: problema con funzioni onclick

salve atutti , mi sono imbattuto in uno strano problema da cui non
riesco ad uscirne, vi spiego:
Interrogo un DB e ricevo dati secondo la tecnologia AJAX, quindi
ho una funzione javascript che ivia richiesta http al server la quale
viene ricevuta da uno script php che interroga il DB e restituisce una
risposta in formato XML che vado ad analizzare con un'altra funzione
javascript.
Il file XML è così strutturato
<data>
    <row>
	<dindice>valore</dindice>
        <darticolo>valore</darticolo>
	<hdescrizione>valore</hdescrizione>
        <dp1>valore</dp1>
   </row>
   <row>
	<dindice>valore</dindice>
        <darticolo>valore</darticolo>
	<hdescrizione>valore</hdescrizione>
        <dp1>valore</dp1>
   </row>
.....
</data>
la funzione javascript che riceve il file e che impagina i risultati è
questa
function stateChanged() {
	if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
	//riceve i dati dal server e ne crea un documento XML
		var xmlDoc = xmlHttp.responseXML;
	//conta il numero totale di righe
		var xmlData = xmlDoc.getElementsByTagName("row");
		var nrows = xmlData.length;
	//scrive in una tabella il numero di pagine -- per il momento sono
visualizzati obbligatoriamente 5 record a pagina
		var tblpages = document.getElementById("tabpages");
		var rowpages = tblpages.insertRow(-1);
		var firstrow = 0;
		var rowxpag = 5;
		datalayout(xmlData,firstrow,rowxpag);
		while (nrows > 0){
			var btn = document.createElement("<button>");
			if (btn.addEventListener){
				btn.addEventListener("click", function()
{datalayout(xmlData,firstrow,rowxpag);}, false);
			}
			else if (btn.attachEvent){
			    btn.attachEvent("onclick", function()
{datalayout(xmlData,firstrow,rowxpag);});
			}
			var cella = rowpages.insertCell(-1);
			cella.appendChild(btn);
			firstrow += rowxpag;
			nrows -= rowxpag;
		}
	}
}
la funzione che scrive le righe è questa
function datalayout(xmlRowsElement,firstrow,rowpag){
	var nrows  = xmlRowsElement.length;
	var tbl = document.getElementById("tabresults");
	for (k=0;k<rowpag;k++){
		if (firstrow<nrows){
			var row = tbl.insertRow(-1);
			row.insertCell(-1).innerHTML =
xmlRowsElement[firstrow].childNodes[0].childNodes[0].nodeValue;
			row.insertCell(-1).innerHTML =
xmlRowsElement[firstrow].childNodes[1].childNodes[0].nodeValue;
			row.insertCell(-1).innerHTML =
xmlRowsElement[firstrow].childNodes[2].childNodes[0].nodeValue;
			row.insertCell(-1).innerHTML = xmlRowsElement[firstrow+
+].childNodes[3].childNodes[0].nodeValue;
		}
		else
			break;
	}
}
Ora il problema è questo:
nella funzione stateChanged() vengono creati dei <button> in maniera
dinamica a seconda di quante sono le pagine. ad ogni button è
associato un evento onclick che fà partire la funzione datalayout.
Questa però deve essere richiamata con argomenti diversi a seconda di
quale button viene schiacciato. Il problema è che la variabile
firstrow cambia valore ogni volta che entra nel ciclo e quindi mi và a
modificare dinamicamete anche il valore dei pulsanti già costruiti.
Come posso fare?
grazie
chiede spiegazioni se non sono stato chiaro


RISOLTO , PER CHI FOSSE INTERESSATO MI CONTATTASSE.