Ciao,
ho un problema che mi ha bloccato da 3 giorni a questa parte...sto per perdere ogni speranza.
Ho una pagina index.html che ha nell'head uno script:
<script src="rexite_fixed.js" type="text/javascript"></script>
lo script contiene tra le altre cose una funzione che sostanzialmente recupera tutti i link della pagina e se ne trova alcuni con la classe=thumb_cat mi crea automaticamente lo stato del rollover.
eccolo:
Codice PHP:
function zoom_over(id_el) {
var a = $(id_el + '_img');
a.setAttribute("src", "images/thumbs_scheda_cat/rollover/" + id_el + ".png");
};
function zoom_out(id_el) {
var a = $(id_el + '_img');
a.setAttribute("src", "images/thumbs_scheda_cat/" + id_el + ".png");
}
function ajax_rollover() {
var thumbs_cat =document.getElementsByTagName('a');
for (var i=0; i<thumbs_cat.length; i++) {
if (thumbs_cat[i].className == 'thumb_cat') {
alert('dentro');
thumbs_cat[i].onmouseover = function() {
zoom_over(this.getAttribute('id'));
}
thumbs_cat[i].onmouseout = function() {
zoom_out(this.getAttribute('id'));
}
}
}
}
Nessun problema fin qui.
Il punto è che la pagina index.html inizialmente non contiene nessun link con "class=thumb_cat". questi vengono inseriti nella pagina dopo una chiamata asincrona AJAX. Io utilizzo una libreria che si chiama LJAX, non penso che nessuno la conosca, ma non importa, io dico tramite LJAX di inserire del codice nella pagina e successivamente di richiamare la funzione ajax_rollover() che mi costruisca i rollover per il nuovo contenuto.
Tutto funziona correttamente, il codice viene inserito nella pagina, la funzione viene correttamente chiamata (se inserisco un alert nella funzione ajax_rollover() lo vedo apparire dopo la chiamata AJAX) ma javascript continua a non trovare link con "class=thumb_cat" all'interno della pagina.
E' come se dopo la chiamata AJAX ancora javascript continui a lavorare sul vecchio DOM e non su quello aggiornato da AJAX.
Ho cercato negli archivi e ho trovato diversi thread in cui si suggeriva di usare eval()...ma come va usato nel mio caso?
ho provato con:
Codice PHP:
function ajax_rollover() {
eval("var thumbs_cat =document.getElementsByTagName('a')");
for (var i=0; i<thumbs_cat.length; i++) {
if (thumbs_cat[i].className == 'thumb_cat') {
alert('dentro');
thumbs_cat[i].onmouseover = function() {
zoom_over(this.getAttribute('id'));
}
thumbs_cat[i].onmouseout = function() {
zoom_out(this.getAttribute('id'));
}
}
}
}
ma nonostante non dia errori ancora non trova i nuovi link nel DOM.
Che fare?
Per favore aiuto, prometto eterna riconoscenza, denaro, fama, pubblicità gratis e quant'altro!
Grazie,
Augusto