Sono riuscito a fare quello che ho scritto nel post sopra...alla fine era più facile di quello che pensassi.
Però adesso ho un altro problema a cui non riesco a venire a capo.
Ad ogni foto è associata una lista di commenti che gli utenti possono inserire.
Ogni commento viene formattato in un div (in cui oltre al commento compaiono una serie di informazioni ... più o meno come i post dei forum).
Quindi ho dovuto fare in modo che il numero dei div da visualizzare cambiasse in maniera dinamica a seconda del numero di commenti presenti.
Per fare cià ho usato la funzione cloneNodes() e sono riuscito a creare tanti DIV quanti me ne servivano e compilato opportunamente tutti gli elementi interni al div.
Fin qui tutto ok. Il problema nasce quando devo richiamare la funzione ajax da uno di questi div. In ogni commento infatti è presente un pulsante di modifica e uno di cancellazione. Cliccandoci sopra viene fatta una nuoca richiesta al server tramite ajax.
Il problema è che la richiesta è come se venisse sempre dall'ultimo commento inserito. Ad esempio se voglio eliminare il primo commento in realtà come ID arriva sempre quello dell'ultimo.
Adesso allego il codice incriminato:
function CambioStato()
{
if (ajax_req.readyState == 4 && ajax_req.status == 200)
{
//alert(ajax_req.responseText);
var obj = eval("(" + ajax_req.responseText + ")");
var comm_root=document.getElementById('tab_commenti');
var comm_src=document.getElementById('blocco_comm');
var n_comm;
var tot_com = obj.TOT_COMM;
...........
...........
if(obj.IS_COMMENTI == true){
var clone = new Array();
//alert(comm_root.childNodes.length);
while( comm_root.hasChildNodes() ) {
comm_root.removeChild( comm_root.firstChild );
}
document.getElementById("no_commenti").style.displ ay="none";
document.getElementById("tab_commenti").style.disp lay="block";
for(n_comm=1;n_comm<=tot_com;n_comm++){
var a,p,img,span = new Array();
var url_canc,url_mod;
clone[n_comm]=comm_src.cloneNode(true);
clone[n_comm].setAttribute('id','blocco_comm'+n_comm);
a = clone[n_comm].getElementsByTagName("a");
p = clone[n_comm].getElementsByTagName("p");
img = clone[n_comm].getElementsByTagName("img");
span = clone[n_comm].getElementsByTagName("span");
a[0].innerHTML = eval("obj.comm"+n_comm+".COM_USER");
a[0].href = eval("obj.comm"+n_comm+".U_COM_USER").replace(/\&/g,'&');
a[1].href = eval("obj.comm"+n_comm+".U_COM_USER").replace(/\&/g,'&');
a[2].href = eval("obj.comm"+n_comm+".U_COM_USER").replace(/\&/g,'&');
a[2].innerHTML = eval("obj.comm"+n_comm+".COM_USER").replace(/\&/g,'&');
span[0].innerHTML = eval("obj.comm"+n_comm+".COM_DATA");
span[1].innerHTML = eval("obj.comm"+n_comm+".USER_REG");
span[2].innerHTML = eval("obj.comm"+n_comm+".USER_FROM");
if (eval("obj.comm"+n_comm+".IS_COM_OWNER") == true){
a[3].style.display="block";
a[4].style.display="block";
img[1].src = eval("obj.comm"+n_comm+".U_IMG_MOD");
img[2].src = eval("obj.comm"+n_comm+".U_IMG_CANC");
url_mod = encodeURI(eval("obj.comm"+n_comm+".U_COM_MOD"));
url_canc = encodeURI(eval("obj.comm"+n_comm+".U_COM_CANC"));
img[1].onclick = function() {Richiesta_2(url_mod);}
img[2].onclick = function() {Richiesta_2(url_canc);}
}else{
a[3].style.display="none";
a[4].style.display="none";
}
p[1].innerHTML = eval("obj.comm"+n_comm+".COM_TEXT");
img[0].src = eval("obj.comm"+n_comm+".U_FOTO_AVATAR");
comm_root.appendChild(clone[n_comm]);
clone[n_comm].style.display="block";
}
document.getElementById("blocco_comm").style.displ ay="none";
}else{
document.getElementById("no_commenti").style.displ ay="block";
document.getElementById("tab_commenti").style.disp lay="none";
}
}
}