Selbstdefinierte HTML-Attribute?
Marc Fischler
- html
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
Hello out there!
Das Problem ist, dass "name" 1. eindeutig sein muss,
Nö. Denke an zusammengehörige Radio-/Checkboxen.
- nicht für jedes HTML-Tag zulässig ist,
Für 'a' ist das.
- semantisch falsch ist.
In der Tat. Mir fällt aber auch nicht wirklich ein passendes ein. 'rel' vielleicht?
See ya up the road,
Gunnar
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