Camping_RIDER: Automatische Registrierung von Elementen

Beitrag lesen

problematische Seite

Aloha ;)

<form oninput="x.value=parseInt(a.value)">
    Lautstärke:
    <input type="range" id="a" value="50">
    <output name="x" for="a">50</output>
</form>

Weil die Variablen a und x offensichtlich nicht bekannt sind. Das Beispiel ist javascriptseitig schlecht. Es muss verbessert werden.

Jein. Das Beispiel nutzt zwei Dinge aus, die normalerweise gegeben sind - nur offenbar im IE nicht.

Normalerweise (z.B. in Chrome) passieren zwei Dinge:

  1. Elemente[1] mit einer ID werden im globalen window-Objekt als Eigenschaft registriert.
  2. Formularelemente[1:1] mit NAME und/oder ID werden im Formular sowohl unter ihrem NAME als auch unter ihrer ID als Eigenschaft registriert.

Es geht ja hier um die Zeile x.value=parseInt(a.value). Die funktioniert auch, falls eben diese Dinge passiert sind - denn da der „Ausführungskontext“ des Event-Handlers (this) das Formular sind eben auch dessen Eigenschaft a (das Formularelement mit ID) und x (das Formularelement mit NAME) ohne weitere Angabe referenzierbar. a wäre sogar außerhalb des Formularkontexts verfügbar, da es wegen der ID ja global registriert wird.

Ich hoffe das war jetzt verständlich ausgedrückt.

Ein kurzer Test mit der IE-Konsole sagt, dass im IE im Formular zwar a registriert wird, x allerdings nicht (document.querySelector("form").a liefert ein Ergebnis, document.querySelector("form").x nicht). Abgesehen davon wird a auch nicht als globale Variable registriert.

Was ich noch herausfinden muss, ist, welche der beiden Aktionen nun eigentlich standardkonform ist (und damit, wer hier eigentlich was falschmacht - der Javascript-Code oder der IE).

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
# Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[

  1. Genauer: deren DOM-Repräsentation ↩︎ ↩︎