2010-07-10 13 views

Odpowiedz

7

Można użyć zestawu setAttribute lub ustawić właściwość bezpośrednio. Tak czy inaczej działa, setAttribute jest standardowym sposobem DOM tego.

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

Oba sposoby są absolutnie standardowe. 'src' /' alt'/'title' jest określone w HTML DOM Level 1. Polecam te właściwości przez 'setAttribute', ponieważ dostęp do nich jest dużo bardziej czytelny, i istnieją poważne błędy w IE dla' getAttribute'/'setAttribute', gdzie właściwości DOM różnią się od atrybutów HTML. – bobince

+0

Ja osobiście używam bezpośredniego ustawienia własności DOM 0 i tak, są błędy. –

+0

Dziękujemy za dodatkowe wyjaśnienie na temat tego problemu Bobka. – 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"); 
}​; 

Uwaga: Bez względu na to, który z nich używasz tak długo, jak masz do czynienia ze standardowymi atrybutami.

+0

Pod względem zgodności z przeglądarkami sposób "staroświecki" i "W3C" jest taki sam? – computersaurus

+1

W tym ograniczonym przypadku tak, ale ogólnie nie, IE ma wiele problemów z 'getAttribute' /' setAttribute', więc powinieneś ** unikać ** tych metod, jeśli to w ogóle możliwe. nb. Atrybuty i właściwości to w wielu przypadkach różne rzeczy! W tym przypadku '.src' przy zachowaniu zachowuje się tak samo, jak ustawienie atrybutu' src', ale przy odczycie zwróci pełny adres URL, na który wskazywał atrybut, który będzie różny dla względnych adresów URL. (Tak się nie stanie w IE, ze względu na wspomnianą wcześniej męczarnię.) – bobince

+0

@computersaurus bobince, jest poprawna. Jest kilka błędów z implementacją IE. Te, które znam, to względność url src/href', 'for',' style' i 'class'. – galambalazs

4

W dokładnie ten sam sposób ..

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