Eigene HTML Attribute
Bastian
- javascript
0 Benjamin Buxbaum0 Cheatah0 Cybaer
0 Mathias Brodala0 Jonathan0 Bastian0 Bastian
Hi,
ich möchte gerne eigene HTML-Attribute verwenden.
Also z.B. sowas hier:
<html>
<head>
<script type="text/javascript">
function init(){
alert(document.getElementById("test").CW);
}
</script>
</head>
<body onload="init()">
<table id="test" CW="Yes">
<tbody ><tr>
<th> Inhalt
</th></tr>
</tbody></table>
</body></html>
Leider funktioniert das so nicht (zumindest in meinem firefox), ich bekomme im alert immer ein undefined statt Yes.
Wenn ich den Wert mit document.getElementById("test").CW="Yes" setze funktionierts, ich will den Wert für CW aber bei der Definition des HTML-Elements angeben können.
Kann mir jemand einen Tipp geben wie ich das hinbekomme ?
Viele Grüße
Basti
Hi Bastian!
Kann mir jemand einen Tipp geben wie ich das hinbekomme ?
Das ist nicht möglich.
mfG
Benjamin
Hi,
ich möchte gerne eigene HTML-Attribute verwenden.
Du meinst, Du möchtest eine eigene Markup Language entwickeln, die HTML ähnlich sieht? Viel Vergnügen. Bitte bezeichne das dann aber nicht als HTML.
Leider funktioniert das so nicht (zumindest in meinem firefox), ich bekomme im alert immer ein undefined statt Yes.
Wenn ich den Wert mit document.getElementById("test").CW="Yes" setze funktionierts,
Das hat nichts mit Attributen zu tun, sondern setzt eine Eigenschaft eines JavaScript-Objektes. Dies ist aufgrund der Funktionsweise von JavaScript immer möglich. Und, auf die Gefahr hin, mich zu wiederholen: Dies hat nichts mit Attributen zu tun.
ich will den Wert für CW aber bei der Definition des HTML-Elements angeben können.
Keine Chance. Wenn Du eine (scheinbar) funktionierende Lösung hast, handelt es sich nicht mehr um HTML.
Cheatah
Hi,
Du meinst, Du möchtest eine eigene Markup Language entwickeln, die HTML ähnlich sieht?
Also genau das, was alle Browserhersteller auch getan haben?
Bitte bezeichne das dann aber nicht als HTML.
Ja ja, und trink nur Wasser, das der Papst persönlich gesegnet hat ...
Keine Chance. Wenn Du eine (scheinbar) funktionierende Lösung hast, handelt es sich nicht mehr um HTML.
Sondern vielleicht um XHTML.
Gruß, Cybaer
Hallo Bastian.
ich möchte gerne eigene HTML-Attribute verwenden.
Also z.B. sowas hier:
<html>
<head>
<script type="text/javascript">
[code lang=javascript]function init(){
alert(document.getElementById("test").CW);
}
> </script>
> </head>
> <body onload="`init()`{:.language-javascript}">
> <table id="test" CW="Yes">
> <tbody ><tr>
> <th> Inhalt
> </th></tr>
> </tbody></table>
> </body></html>[/code]
>
> Leider funktioniert das so nicht (zumindest in meinem firefox), ich bekomme im alert immer ein undefined statt Yes.
Ja, da kein Browser ungültige Attribute beachten muss.
> Wenn ich den Wert mit document.getElementById("test").CW="Yes" setze funktionierts,
Ja, da du hier kein Attribut an das HTML-Element hängst, sondern eine Eigenschaft an das HTML-Elementobjekt. Das kannst du machen, wie es dir beliebt, hier sind dir keine Grenzen gesetzt.
> ich will den Wert für CW aber bei der Definition des HTML-Elements angeben können.
Weshalb? Welchen Zweck genau soll „CW“ hier erfüllen?
Einen schönen Mittwoch noch.
Gruß, Mathias
--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules
Hallo Bastian,
Das müsste eigentlich über getAttribute/setAttribute funktionieren.
Ist dann natürlich kein gültiges HTML mehr, (sollte aber auch zu keinen Problemen führen).
Jonathan
Hallo Jonathan,
mit setAttribute bekomme ich es doch aber nicht hin dass es nur im HTML-Tag stehen muss (<div MeinAttribut='Yes'>) sondern ich muss dann einen Aufruf objekt.setAttribut(...) machen !? Wäre wohl eine Alternative, wenn auch das Setzen des Attributs dann etwas aufwändiger ist.
Viele Grüße
Basti
Hallo Bastian,
Das müsste eigentlich über getAttribute/setAttribute funktionieren.
Ist dann natürlich kein gültiges HTML mehr, (sollte aber auch zu keinen Problemen führen).
Jonathan
Hi,
mit setAttribute bekomme ich es doch aber nicht hin dass es nur im HTML-Tag stehen muss (<div MeinAttribut='Yes'>) sondern ich muss dann einen Aufruf objekt.setAttribut(...) machen !? Wäre wohl eine Alternative, wenn auch das Setzen des Attributs dann etwas aufwändiger ist.
Welchen sinn macht es ungueltige Attribute zu erstellen, wenn du es sowieso mit JavaScript machst? Dann gib doch einfach den Elementen die Eigenschaft, dann kannst Du es auch so auslesen wie du es in deinem Post schon beschrieben hast... Mit JS kannste machen was Dir beliebt.
Hi,
erstmal danke für die schnellen Antworten, bin von dem Forum echt beeindruckt.
Weshalb? Welchen Zweck genau soll „CW“ hier erfüllen?
Ich hatte folgendes vor: Ich habe ein JS-Toolkit, in dem sind Funktionen die einen Tooltip erstellen, die Elemente Drag and Drop fähig machen, Tabellen sortierbar machen und noch einige weiter Sachen.
Die Funktionen dieses Toolkits sollen von einem Webanwendungsentwickler möglichst einfach eingebunden werden können, deshalb der Versuch dass nur im html tag ein Attribut angegeben werden muss, also z.B. <div tooltip="Yes">. Beim onload läuft dann die init-Funktion des Toolkits über alle HTML-Elemente im Dom-Baum und schaut ob das Attribut auf Yes gesetzt ist. Falls ja baut es die Funktionalität ensprechend ein.
Aber so wie ich euch verstanden hab geht das so nicht und ich muss mir doch was anderes einfallen lassen, oder ?
Viele Grüße
Basti
Aber so wie ich euch verstanden hab geht das so nicht und ich muss mir doch was anderes einfallen lassen, oder ?
Ja, verwende eines der vorgegebenen Attribute. "Tooltip" und title liegen m.E. gar nicht so weit auseinander.
Siechfred
Hi Siechfred,
danke für den Tipp, aber da das Toolkit ca. 12 Funktionen hat wird das denke ich so nicht gehn. Vielleicht finde ich 12 freie Attribute die ich verwenden könnte, aber besonders elegant find ich ist das Ganze dann ja nicht mehr :)
Viele Grüße
Basti
Aber so wie ich euch verstanden hab geht das so nicht und ich muss mir doch was anderes einfallen lassen, oder ?
Ja, verwende eines der vorgegebenen Attribute. "Tooltip" und title liegen m.E. gar nicht so weit auseinander.
Siechfred
Grütze .. äh ... Grüße!
danke für den Tipp, aber da das Toolkit ca. 12 Funktionen hat wird das denke ich so nicht gehn. Vielleicht finde ich 12 freie Attribute die ich verwenden könnte, aber besonders elegant find ich ist das Ganze dann ja nicht mehr :)
<element class="mittooltip rosarot umgedreht riesengroß">
Cü
Kai
Hallo,
<element class="mittooltip rosarot umgedreht riesengroß">
Da man in dem Fall sowieso Style-Informationen im Markup unterbringt, die dort eigentlich nichts zu suchen haben, könnte man sie auch im JavaScript notieren bei der Initialisierung der Tooltips. new Tooltip(element, Toolkit.rosa, Toolkit.umgedreht, Toolkit.riesengroß) oder ähnliches wäre zwar auch keine Trennung von Präsentation und Verhalten, aber immerhin nicht schlechter. Es ist natürlich einfacher, die Infos komplett im HTML zu notieren und JavaScript bloß einzubinden und automatisch suchen zu lassen.
Mathias
Grütze .. äh ... Grüße!
<element class="mittooltip rosarot umgedreht riesengroß">
Da man in dem Fall sowieso Style-Informationen im Markup unterbringt, die dort eigentlich nichts zu suchen haben, könnte man sie auch im JavaScript notieren bei der Initialisierung der Tooltips. new Tooltip(element, Toolkit.rosa, Toolkit.umgedreht, Toolkit.riesengroß) oder ähnliches wäre zwar auch keine Trennung von Präsentation und Verhalten, aber immerhin nicht schlechter. Es ist natürlich einfacher, die Infos komplett im HTML zu notieren und JavaScript bloß einzubinden und automatisch suchen zu lassen.
So wie ich diesen Beitrag von ihm verstanden habe, sollen _andere_ mit dem System arbeiten können und die jeweils gewünschte Funktionalität für ein Element eben einfach auf diese Weise einbinden, ohne Zugriff auf das JS.
Daß ich in meinem Beispiel Klassennamen verwendet habe, die Style-Informationen suggerieren, ist reiner Zufall, das geplante Toolkit scheint auch völlig andere Funktionalität haben. Ich hätte genausogut
<element class="draggable tooltip nochnefunktion"> verwenden können.
Cü
Kai
Hi,
mit dem Tipp von Jonathan klappt es jetzt:
<table id="test" CW="Yes">
...
alert(document.getElementById("test").getAttribute('CW'));
mit Ausgabe 'Yes' so wie es sein soll.
Werde noch testen müssen obs mit allen aktuellen Browsern geht, hoffe aber das Jonathan damit recht hat: "Ist dann natürlich kein gültiges HTML mehr, (sollte aber auch zu keinen Problemen führen)".
Viele Grüße
Basti
Hallo Bastian.
mit dem Tipp von Jonathan klappt es jetzt:
Die optimale Lösung ist die von Kai vorgeschlagene unter Nutzung des class-Attributes. Du solltest unbedingt diese nutzen.
Einen schönen Mittwoch noch.
Gruß, Mathias
Hi Mathias,
danke für den Hinweis, ich werd mir das class-Attribut nochmal anschaun und es mir damit überlegen.
Viele Grüße
Basti
Hi,
Werde noch testen müssen obs mit allen aktuellen Browsern geht,
Ja, geht.
"Ist dann natürlich kein gültiges HTML mehr,
Die aktuellen Browser sind schon (im wesentlichen oder teilweise) für XHTML vorbereitet - und dort kannst Du eigene Attribute definieren, bis Du schwarz wirst. ;-)
Unwahrscheinlich, daß ein zukünftiger Browser diese Zugriffsmöglichkeit für plain HTML noch extra deaktiviert ...
Gruß, Cybaer
Hello out there!
[In] XHTML […] kannst Du eigene Attribute definieren, bis Du schwarz wirst. ;-)
Das ist ein Irrtum.
XHTML erlaubt, was in der DTD steht, sonst nichts. XHTML erlaubt nicht das Einbinden von Elementen oder Attributen aus anderen Namensräumen.*
See ya up the road,
Gunnar
* XHTML 1.1 + MathML 2.0 + SVG 1.1 [XHTML+MathML+SVG] erlaubt das Einbinden von Elementen und Attributen aus den MathML- und SVG-Namensräumen (und nur dieser), weil alle diese auch mit in der DTD stehen
Hi,
XHTML erlaubt, was in der DTD steht, sonst nichts. XHTML erlaubt nicht das Einbinden von Elementen oder Attributen aus anderen Namensräumen.*
OK, dann schmeißen wir XHTML auf den Müllhaufen der Geschichte, und "beschränken" uns auf XML. >:->
Gruß, Cybaer
Hallo Cybaer.
XHTML erlaubt, was in der DTD steht, sonst nichts. XHTML erlaubt nicht das Einbinden von Elementen oder Attributen aus anderen Namensräumen.*
OK, dann schmeißen wir XHTML auf den Müllhaufen der Geschichte, und "beschränken" uns auf XML. >:->
Gerne doch. Wenn sämtliche Browser damit umgehen können …
Einen schönen Donnerstag noch.
Gruß, Mathias
Hi,
Gerne doch. Wenn sämtliche Browser damit umgehen können …
Ist das bei XHTML anders? 8->
Gruß, Cybaer
Hello out there!
[…] "beschränken" uns auf XML. >:->
Gerne doch. Wenn sämtliche Browser damit umgehen können …
Welche heute relevanten können das nicht?
See ya up the road,
Gunnar
Hallo Gunnar.
[…] "beschränken" uns auf XML. >:->
Gerne doch. Wenn sämtliche Browser damit umgehen können …
Welche heute relevanten können das nicht?
OK, unvollständige Aussage. So etwas wie XLink muss schon umgesetzt werden können, sonst ist ein eigener XML-Dialekt unnütz. (Ob damit auch solche Dinge wie über das link-Element vorgenommen werden können, weiß ich nicht.)
Einen schönen Donnerstag noch.
Gruß, Mathias