Eigene Attribute definieren mit HTML5

Lösung

Seit HTML5 ist es nun endlich auch möglich, eigene (valide!) Attribute zu definieren und HTML-Elementen zuzuweisen. So muss man vor allem für JavaScript nicht mehr andere Attribute wie longdesc, name oder Ähnliches missbrauchen, um Daten für das Skript zu hinterlegen. Einzige Bedingung: das Attribut muss mit dem Präfix data- beginnen, also z. B. data-myattribute="Lorem ipsum dolor sit amet".

Beispiel

In folgendem, kleinem Beispiel wird jedem Bild ein Attribut data-largesrc zugewiesen, das den Pfad zu einer vergrößerten Version des Bildes enthält. Beim Klick auf das Bild wird der Wert des Attributs per JavaScript ausgelesen. Dieser Wert wird dann als neue src des Bildes gesetzt. (Das Beispiel funktioniert nicht im Internet Explorer, da dieser die vom W3C standardisierte Funktion addEventListener nicht unterstützt. Um das Beispiel übersichtlich zu halten, verzichte ich auf eine proprietäre Anpassung.)

<!DOCTYPE html>
<html lang="de">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Beispiel: Eigene Attribute definieren mit HTML5</title>
        <script type="text/javascript">   
            window.onload = function() {
                // getting all images
                var images = document.images;
                for (var i = 0; i < images.length; i++) {
                    // adding click event listener to every image (except IE due to lack of supporting standards)
                    images[i].addEventListener('click', function() {
                        // setting the attribute value of 'data-largesrc' as src of the image
                        this.setAttribute('src', this.getAttribute('data-largesrc'));
                    }, false);
                }
            };
        </script>
    </head>       
    <body>        
        <div>
            <img src="meinkleinesbild_1.jpg" data-largesrc="meingrossesbild_1.jpg" />
            <img src="meinkleinesbild_2.jpg" data-largesrc="meingrossesbild_2.jpg" />
            <p>Zum Vergrößern auf das Bild klicken</p>  
        </div>        
    </body>   
</html>

Demo ansehen

Mehr Infos