Marc Fischler: Selbstdefinierte HTML-Attribute?

Hallo Zusammen,

ich programmiere zur Zeit ein stark JavaScript-orientiertes Projekt. Dabei traversiere ich HTML-Tags und verwende Attribut-Werte, um per JavaScript den DOM-Baum zu erweitern. Ein Beispiel:

<a class="inline">Anker</a>

Um dann per JavaScript nach <a>-Tags mit der class "inline" zu suchen und den passenden <a>-Elementen weitere Attribute hinzuzufügen, zum Beispiel

ahref.setAttribute('href', 'javascript:;');

Jetzt möchte ich dieses Konzept erweitern und weitere Werte ins HTML reinschreiben, die dann von JavaScript-Code weiter verarbeitet werden können. So in etwa:

<a class="inline" name="values_10_20_24">Anker</a>

Ich könnte dann so etwas machen:

var value1 = ahref.getAttribute('name').split('_')[1];
var value2 = ahref.getAttribute('name').split('_')[2];
var value3 = ahref.getAttribute('name').split('_')[3];

Das Problem ist, dass "name" 1. eindeutig sein muss, 2. nicht für jedes HTML-Tag zulässig ist, 3. semantisch falsch ist.

Hat jemand eine Idee, wie man das anders lösen kann oder ob es möglich ist, eigene Tag-Attribute zu benutzen, zum Beispiel:

<a class="inline" value1="10" value2="20" value3="24">Anker</a>

Bin für jede Hilfe dankbar!
Beste Grüße,
Marc

  1. Hello out there!

    Das Problem ist, dass "name" 1. eindeutig sein muss,

    Nö. Denke an zusammengehörige Radio-/Checkboxen.

    1. nicht für jedes HTML-Tag zulässig ist,

    Für 'a' ist das.

    1. semantisch falsch ist.

    In der Tat. Mir fällt aber auch nicht wirklich ein passendes ein. 'rel' vielleicht?

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
  2. Hallo,

    ahref.setAttribute('href', 'javascript:;');

    setAttribute ist bei HTML-Attributen unnötig, es reicht ahref.href = "...";

    Dabei traversiere ich HTML-Tags und verwende Attribut-Werte, um per JavaScript den DOM-Baum zu erweitern (...) Jetzt möchte ich dieses Konzept erweitern und weitere Werte ins HTML reinschreiben, die dann von JavaScript-Code weiter verarbeitet werden können. So in etwa:

    <a class="inline" name="values_10_20_24">Anker</a>

    Gehe ich richtig in der Annahme, dass du nur den DOM-Baum änderst, also das vom Server übertragene Dokument nicht solche Informationen hat?

    Dann möchtest du wohl einfach bestimmte Werte an einem Elementknoten speichern. Nichts leichter als das - dazu brauchst du keine Attribute. Du kannst dem Elementknoten-Objekt weitere Eigenschaften zuweisen - das geht bei jedem Objekt in JavaScript:

    a_element.value1 = 10;
    a_element.value2 = 20;
    a_element.value3 = 24;

    Später kannst du die Eigenschaften genauso auslesen.

    <a class="inline" value1="10" value2="20" value3="24">Anker</a>

    In manchen Browsern lassen sich solche Nicht-HTML-Attribute setzen und auslesen, in anderen nicht. Die oben beschriebene Methode sollte zuverlässiger sein.

    Mathias