Der Martin: ID an Funktion übergeben

Beitrag lesen

Hallo Matthias,

Leider funktioniert es (noch) nicht, wahrscheinlich nicht zuletzt wegen mir.

wie äußert sich dieses Nicht-Funktionieren? Was für eine Fehlermeldung?

<script type="text/javascript">
function schliessen(window_id) {
this.document.getElementById(window_id).style.visibility = "hidden";
}
</script>

Wie schon gesagt: Nimm das "this" mal weg. Ich vermute, dass "this" in diesem Fall nicht das window-Objekt referenziert, sondern nur den Link, in dessen Kontext die Funktion als Eventhandler aufgerufen wird.

Aber wie soll die 'function schliessen(window_id)' herausfinden, dass window_1 window_id entspricht?

Dadurch, dass du den gewünschten tatsächlichen Wert beim Aufruf der Funktion im onclick-Handler übergibst - das machst du ja auch korrekt.
Das ist das Grundkonzept von Funktionen in sehr vielen Programmiersprachen: Man definiert die Funktion mit einem Parameter (oder mehreren), der einen beliebigen Namen hat und nur als Platzhalter steht. Für diesen Platzhalter übergibt man dann beim Aufruf der Funktion den tatsächlichen Parameter.

Ich möchte ja explizit in der function (wo window_id steht) keine spezifische ID definieren.

Eben. :-)

Zum Abfangen der Fehlermeldung:
  if (document.getElementById(window_id){
     document.getElementById(window_id).style.visibility = "hidden";
  }
Versteh ich nicht, ich gebe in jeder Funktion den Parameter mit, wie soll da eine entsprechende Fehlermeldung kommen?

Angenommen, du übergibst als id-Wert nicht "window_2", sondern "morgenrot". Oder, etwas realistischer, wegen eines blöden Tippfehlers "windw_2". In deinem Dokument gibt es aber kein Element mit der ID "windw_2". Also muss der Aufruf von getElementById() scheitern. Das kann (theoretisch) auch passieren, wenn der Besucher schon rumklickt, während das Dokument noch gar nicht fertig geladen ist.
Und um in diesem Fall keine Fehlermeldung auszuwerfen, sondern den Aufruf einfach stillschweigend zu ignorieren, habe ich dir die zusätzliche Abfrage empfohlen.

Schönes Wochenende,
 Martin

--
Niemand lebt allein von seinen Träumen.
Aber wer träumt, lebt noch.