molily: Startelement auslesen

Beitrag lesen

Hallo,

Hm. Seltsam:

<script style="text/javascript">
function blubb(bla)
{
alert(bla);
bla.style.display="none";
}
</script>
<a href="" onclick="blubb(this);return false;">clicktest</a>

zeigt im alert tatsächlich die URL.
Aber die Style-Anweisung läßt den Link verschwinden.

Das a-Elementobjekt hat Eigenschaften vom Location-Objekt (http://de.selfhtml.org/javascript/objekte/location.htm, alert(location.constructor) im Mozilla), also z.B. protocol. Wie window.location hat bla einen value, daher verhält es sich wie ein String, ohne String-Eigenschaften (wie length) oder String-Methoden (wie substring) zu besitzen. alert(typeof bla.constructor) wird (zumindest im Mozilla) wie erwartet [HTMLAnchorElement] ausgeben. Es wird also kein String übergeben, sondern tatsächlich das das Elementknoten-Objekt. Daher funktioniert auch der Zugriff auf style. Das ist eine seltsame Konstruktion, weil sie sich nicht nachvollziehen lässt:

var x = new Object('beispielwert');
alert(x);
alert(x.valueOf());
alert('typ: ' + typeof(x));
alert('konstruktor: ' + x.constructor);
alert('substring: ' + typeof(x.substring));

Der Konstruktor ist unweigerlich String, was nach ECMAScript auch logisch erscheint. Die a-Elementknoten und window.location sind also Sonderfälle, die wahrscheinlich zur Abwärtskompatibilität noch funktionieren.

Mathias