input.type verändern FF klappt IE nicht, warum?
fankx
- javascript
Hallo,
mit u.g. Script kommt FF klar, IE nicht. Weiß jemand Rat. Ich höchte den type des input-Buttons von "hidden" auf "text" ändern per Click.
Dank und Gruß, Frankx
function typAendern() {
a=document.getElementById('input1').type;
alert(a);
document.getElementById('input1').type="text"; b = document.getElementById('input1').type; alert(b);
}
//]]>
</script>
<input id="input1" name="input" type="hidden" value="13" />
<input type="button" value="zeigen" onclick="typAendern()">
hi,
mit u.g. Script kommt FF klar, IE nicht. Weiß jemand Rat. Ich höchte den type des input-Buttons von "hidden" auf "text" ändern per Click.
Dass in selfhtml bei der Beschreibung von elements.type das Bildchen Verwendung fand, mag seinen Grund haben.
gruß,
wahsaga
Hallo wahsaga,
danke. Kannst Du mir bitte helfen zu sehen, was ich nicht zu sehen scheine. Ich weise doch dem input einen type zu, nämlich text. Die Ausgabe bzw. der Zugriff auf dieses Objekt hab ich ja via alert getestet. Da gibt er ja auch bei beiden erstmal "hidden" aus. Nur beim umbenennen nicht. Ich kann dazu an der angegebenen Stelle nichts finden. Zumal tuts der FF ja, ich dachte der sei in sowas konformer als IE, und die Konsole gibt auch keinen Fehler
Dank und Gruß,
Frankx
Hallo wahsaga.
Dass in selfhtml bei der Beschreibung von elements.type das Bildchen
Verwendung fand, mag seinen Grund haben.
Worauf begründet sich dies eigentlich? Ich kann weder im DOM Level 1 noch im Level 2 hierzu etwas finden.
Einen schönen Samstag noch.
Gruß, Ashura
Hallo,
Ich kann weder im DOM Level 1 noch im Level 2 hierzu etwas finden.
Steht doch hinter dem ersten Link:
readonly attribute DOMString type;
Also erst ab DOM 2 HTML schreibbar. Kannst du das bitte als Fehler in SELFHTML melden?
Im Übrigen ist SELFHTML insgesamt nicht an DOM 2 angepasst, also gibt es wohl einige solcher Fehler.
Mathias
Hallo Matthias,
erklärt das, warum es im IE6 nicht angezeigt wird und im FF 1.07 aber doch. In dem Link von wahsaga konnte ich bei der Beschreibung von type nichts erhellendes finden. Ich glaube jetzt kapiert zu haben, dass es erst ab DOM 2 schreibbar, also via Javascript auch änderbar ist. Der Tip mit display ist ja prima in dem Zusammenhang.
Dank Frankx
Hallo,
erklärt das, warum es im IE6 nicht angezeigt wird und im FF 1.07 aber doch.
Ja, denn der IE setzt vom offiziellen DOM meist nur DOM Level 1 um. Zusätzlich hat er einige proprietäre "DHTML"-Objekte, -Eigenschaften und -Methoden, die zwar teilweise wie die im DOM heißen, aber völlig anders arbeiten. So kann man z.B. im IE mit [HTMLElement].style.setAttribute() style-Attribute setzen. Das ist so im DOM nicht vorgesehen. Das hat dafür [CSSStyleDeclaration].setProperty() definiert.
Hier http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/type_7.asp steht auch, wann man die type-Eigenschaft eines INPUT-Elements im IE nachträglich mit DHTML verändern kann.
viele Grüße
Axel
Hallo Axel,
danke für die meine grauen Zellen etwas erhellenden Links. In SelfHtml find ich über DHTML schlicht, dass dies ein Sammelbegriff für mögliche Operationen (also zB. Eventhandler/JS) ein HTML-Dokument dynamisch zu gestalten.
Auf der MS-Page steht zu type: "As of Microsoft Internet Explorer 5, the type property is read/write-once, but only when an input element is created with the createElement method and before it is added to the document." Jetzt fehlt mir die exakte Übersetzung von "As of". Will das heißen, dass dieses read/write-once nur der Fall ist, wenn das Objekt mit der createElement Methode erstellt wurde?
Auch steht dort ja: "object.type [ = sType ]" also genau das, was ich gemacht hatte und im FF ja auch ging (dass es am DOM 2 liegt, hab ich zumindest schon kapiert).
By the way (;-), wozu "create Element" statt "document.write", oder bezieht sich das auf Programmierungen in XML-Kontext?
Und [CSSStyleDeclaration].setProperty(), wann bzw. wie kommt das zum Einsatz. Wenn ich "document.getElementById('bodybody').style.backgroundColor="#123";" und dem body die id="bodybody" zugewiesen habe, dann übernimmt er die style-declaration auch ohne dass ich ihm vorher explizit eine zugewiesen hatte. Klappt das nicht immer bei allen Style-Eigenschaften?
Dank und Gruß, Frankx
Hallo,
Auf der MS-Page steht zu type: "As of Microsoft Internet Explorer 5, the type property is read/write-once, but only when an input element is created with the createElement method and before it is added to the document." Jetzt fehlt mir die exakte Übersetzung von "As of". Will das heißen, dass dieses read/write-once nur der Fall ist, wenn das Objekt mit der createElement Methode erstellt wurde?
Ja.
Ab Microsoft Internet Explorer 5 ist die type-Eigenschaft zwar read/write-once, aber nur, wenn das INPUT-Element mit createElement erstellt wurde und bevor es dem Dokument hinzugefügt wird.
Es soll also offensichtlich verhindert werden, dass ein INPUT, welches bereits einmal angezeigt wurde, nachträglich in seiner type-Eigenschaft verändert werden kann.
By the way (;-), wozu "create Element" statt "document.write", oder bezieht sich das auf Programmierungen in XML-Kontext?
Nein, aber "... und bevor es dem Dokument hinzugefügt wird".
Wenn ich "document.getElementById('bodybody').style.backgroundColor="#123";" und dem body die id="bodybody" zugewiesen habe, dann übernimmt er die style-declaration auch ohne dass ich ihm vorher explizit eine zugewiesen hatte. Klappt das nicht immer bei allen Style-Eigenschaften?
Doch, das ist sogar die besserer Methode. Dieser Bequemlichkeitsmechanismus;-) ist im DOM auch implementiert und korresponiert zufällig[1] fast 100%ig mit dem proprietären .style Objekt des MSIE.
[1] Natürlich nicht zufällig, weil Microsoft natürlich auch beim W3C mit-/einwirkt.
viele Grüße
Axel
Hallo molily.
Also erst ab DOM 2 HTML schreibbar. Kannst du das bitte als Fehler in SELFHTML melden?
Habe ich hiermit erledigt.
Einen schönen Samstag noch.
Gruß, Ashura
Hi,
Worauf begründet sich dies eigentlich?
Vermutung: Darauf, daß Browser Formelemente gerne mal vom System darstellen lassen - und da müßte dann dem System mitgeteilt werden, daß es jetzt das bisher vorhandene Formelement durch ein komplett anderes ersetzt werden muß ...
Wenn's nur um hidden <-> text geht, bietet sich display:none <-> display:inline an ...
cu,
Andreas