PDA

View Full Version : [DOM + html] Non riesco proprio a capire come fa a non funzionare


brianss
02-08-2008, 15:19
ciao ragazzi...
ho 2 righe di codice che non capisco come fanno a non funzionare!!!

nel file php (sto su pagine dinamiche) ho messo questo javascript:

var elemento = document.getElementById('img3')
alert('ok')
elemento.setAttribute('src', 'images/b2a.gif')
alert('ok1')



e qui ho l'elemento di cui devo modificare l'attributo:
<img id="img3" alt="" src="images/b3.gif" />

Come fa a non funzionare una cosa così banale??? forse sbaglio sintassi?

ho notato inoltre che se metto elemento dentro un'alert il valore di elemento è null

Big Bamboo
02-08-2008, 21:33
La sintassi mi pare corretta, mancano solo i ; alla fine di ogni istruzione.

brianss
02-08-2008, 21:43
si ma in javascript funziona anche senza i punti e virgola....comunque li ho messi per scrupolo ma niente da fare

atragon
03-08-2008, 01:38
La sparo al volo: mettere i doppi apici? Cioè document.getElementById("img3")

Xfight
03-08-2008, 08:28
Alura... questa funzione immagino che venga avviata da sola, senza che sia chiamata da nessuno, cioè è scritta all'interno del file html senza essere racchiusa da una funzione.
Il problema è che, così facendo, la funzione viene lanciata PRIMA del caricamento della pagina e non troverà l'id 'img3' e l'errore è appunto elemento is null.

Dovresti racchiudere il codice in una funzione e farla caricare con
<body onload="tuafunzione();">....</body>

Così la funzione verrà usata DOPO aver caricato la pagina e troverà l'id che vuoi trovare con getElementById.

Se vuoi fare che l'immagine cambi quando passi sopra con il mouse o robe del genere, pre-carica le immagini nel browser così eviti lo "sfarfallio" del scaricamento dell'immagine :
...
// va scritto fuori da ogni funzione, così la variabile imm1 è pubblica per tutti
var imm1 = new Image();
imm1.src = "percorso_immagine/img1.gif";
....
function tua_funzione() {
var els = document.getElementById('img3');
els.src = imm1.src;
}


In ogni caso, se scrivi codice javascript è sempre bene usare un debugger tipo firebug ( estensione per firefox ) oppure la console errori ( per opera, è integrata ) così vedi chi ha fatto l'errore e che errore ha lanciato, anche se quello da te riportato è un po' stravagante XD

ByeBye