2010-07-10 38 views
6

Ho un'immagine in miniatura che quando si fa clic cambia un'immagine più grande sulla pagina. Ho una parte del codice funzionante semplicemente cambiando il file .src con onclick. C'è anche un modo per cambiare gli attributi alt e title con onclick?Cambia immagine alt con Javascript onclick

risposta

7

È possibile utilizzare setAttribute o impostare direttamente la proprietà. In entrambi i casi, lo setAttribute è il modo standard DOM per farlo.

el.onclick = function() { 
    var t = document.getElementById('blah'); 

    // first way 
    t.src = 'blah.jpg'; 
    t.title = 'new title'; 
    t.alt = 'foo'; 

    // alternate way 
    t.setAttribute('title', 'new title'); 
    t.setAttribute('alt', 'new alt'); 
    t.setAttribute('src', 'file.jpg'); 
} 
+2

Entrambi i modi sono assolutamente standard. 'src' /' alt'/'title' è specificato in DOM Level 1 HTML. Consiglierei queste proprietà su 'setAttribute' perché accedervi è molto più chiaro da leggere, e in IE ci sono errori severi per' getAttribute'/'setAttribute' dove le proprietà DOM sono diverse dagli attributi HTML. – bobince

+0

Personalmente utilizzo personalmente lo stile DOM 0 di impostazione diretta delle proprietà, e sì ci sono bug. –

+0

Grazie per il chiarimento aggiuntivo su questa domanda bobince. – computersaurus

3
img.onclick = function() { 
    // old fashioned 
    img.src = "sth.jpg"; 
    img.alt = "something"; 
    img.title = "some title"; 
    // or the W3C way 
    img.setAttribute("src", "sth.jpg"); 
    img.setAttribute("alt", "something"); 
    img.setAttribute("title", "some title"); 
}​; 

Nota: Non importa che uno si sta utilizzando il tempo che hai a che fare con gli attributi standard.

+0

In termini di compatibilità del browser, la modalità "vecchio stile" e "W3C" è la stessa? – computersaurus

+1

In questo caso limitato si, ma in generale no, IE ha molti problemi con 'getAttribute' /' setAttribute' e quindi si dovrebbe ** evitare ** quei metodi se possibile. nb. Attributi e proprietà sono cose diverse in molti casi! In questo caso, '.src' quando l'impostazione si comporta come l'attributo' src', ma alla lettura restituisce l'URL completo a cui puntava l'attributo, che sarà diverso per gli URL relativi. (Questo non accadrà in IE, a causa della suddetta bug.) – bobince

+0

@computersaurus bobince, è corretto. Ci sono un paio di bug con l'implementazione di IE. Quelle che conosco sono la relatività di 'src/href' url,' for', 'style' e' class'. – galambalazs

4

Esattamente allo stesso modo ..

document.getElementById('main_image_id').title = 'new title' 
document.getElementById('main_image_id').alt = 'new alt'