Tobias: Variablenübergabe: Unmöglich oder eine leicht knackbare Nuß?

Hallo geschätzte Auskenner!

Die Comunity hat mir schon einmal geholfen und ich hoffe, sie bringt mich auch diesmal weiter. Aber vielleicht geht's ja auch nicht.

Die Vorgeschichte:
Ich lasse per Javascript eine Tabelle entstehen, in jede Zelle soll etwas anderes und dazu brauche ich die Zählvariable, die bei der Tabellenerstellung mitläuft. Sicher, ein paar wenige Zellen könnte man auch per Hand schreiben, aber inzwischen sind es knapp 80 Zellen, und wenn sich was ändert, will ich nicht zu Fuß alle Zellen ändern müssen, sondern nur ein kleines bißchen Quelltext.

Soviel dazu.
Ich habe den Kern des Problems inzwischen einkreisen können.
Übrig blieb dieses kleine bißchen.
Es soll bewirken, daß man auf den Link seiner Wahl (seiner Nummer)klickt und sich ein neues Fenster mit eben dieser Nummer drin öffnet. (siehe Link)

<script>
function Infofenster(a) {
Details=window.open()
Details.document.write (a)}
// Eine Funktion "Infofenster", die die ihr übergebene Variable in einem neuen Fenster ausgibt.

for (var i = 1; i <= 3; i++){
document.write ("Person Nummer " + i + " <a onclick=Infofenster(i)>klick!</a><br>")
}

</script>

Das Problem ist, daß, egal, auf welchen Link man klickt, immer nur eine 4 ausgegeben wird (Wert der Variable i nach Beendigung der Schleife).
Wie kann ich es so ändern, daß auch die Nummer im Fenster angezeigt wird, auf deren Link ich geklickt habe?
Geht das so überhaupt? Oder anders? Oder gar nicht?

Ich wäre mehr als überglücklich, wenn sich jemand meines Postings annehmen würde.

  1. for (var i = 1; i <= 3; i++){
    document.write ("Person Nummer " + i + " <a onclick=Infofenster(i)>klick!</a><br>")
    }

    Was vermutest du steht im Quelltext den du mit diesen Zeilen ausgibst?

    Struppi.

    1. Hi Struppi!

      Ich weiß nicht, ob ich deine Frage richtig verstanden habe, aber es sollte dann auf der Seite Folgendes zu lesen sein:

      Person Nummer 1 [unterstrichen]klick![/unterstrichen]
      Person Nummer 2 [unterstrichen]klick![/unterstrichen]
      Person Nummer 3 [unterstrichen]klick![/unterstrichen]

      Und bei einem Klick auf "klick!" soll er ein Fenster öffnen, in dem jeweils 1, 2 oder 3 steht.
      (Nachher, wenn's fertig ist, ist es natürlich sinnvoller.)
      Das Problem ist aber (glaube ich meinen rudimentären js-Kenntnissen entnehmen zu können), daß er die Funktion "Infofenster" erst ausführt, wenn die Schleife zu Ende ist, die Seite angezeigt wird und ich dann draufklicke und dann ist i immer 3 und egal, wo ich draufklicke, es wird immer eine 3 ausgegeben.

      Ich fände es echt gut, wen du mir da helfen könntest.

      Früher war es so, daß die Forenbeiträge immer zum Monatsende ins Archiv gepackt wurden. Wenn dem nach dem Forumumbau immernoch so ist, dann würde ich dich bitten, daß wir vielleicht per Email in Kontakt bleiben. (tobchen@gmx.net)

      Aber probier's erstmal über das Forum.

      In unbändiger, gespannter Erwartung... TOBI

      PS: Der URL zeigt die Seite, auf die das Ganze mal soll. Wenn man auf die Fotos klickt, soll ein Fenster geöffnet werden, was nähere Informationen ausgibt, die in http://free.pages.at/weinberg2002/Datenbank.js gespeichert sind. Wenn du dir den Quelltext der Seite anguckst, siehst du, das da eigentlich kaum richtiges HTML drin ist, sondern das alles per document.write ("<html-tags>") gemacht ist, damit er die Tabelle selber berechnet und zeichnet. Ich könnte natürlich auch von Hand
      die Tabelle schreiben und dann "Infofenster" per Hand eine Zahl übergeben, aber das will ich nur ungern machen, weil ich das schon bis hierher so schön ausgeklügelt habe. :-)
      Also: Wenn du mir zu dem anfangs genannten Problem (i ist immer 3) helfen könntest, wäre ich dir sehr verbunden.

      1. Hi Struppi!

        Ich weiß nicht, ob ich deine Frage richtig verstanden habe, aber es sollte dann auf der Seite Folgendes zu lesen sein:

        Person Nummer 1 [unterstrichen]klick![/unterstrichen]
        Person Nummer 2 [unterstrichen]klick![/unterstrichen]
        Person Nummer 3 [unterstrichen]klick![/unterstrichen]

        Jaja, das ist aber nicht das Problem.

        Schau dir doch mal an was ich zitiert hatte:

        for (var i = 1; i <= 3; i++){
        document.write ("Person Nummer " + i + " <a onclick=Infofenster(i)>klick!</a><br>")
        }

        Damit gibst du folgendes aus:

        Person Nummer 1 <a onclick=Infofenster(i)>Klick!</a><br>
        Person Nummer 2 <a onclick=Infofenster(i)>Klick!</a><br>
        Person Nummer 2 <a onclick=Infofenster(i)>Klick!</a><br>

        1. fehlt ein href
        2. muss der Wert von oncklick in Anführungszeichen stehen
        3. ist i = 3

        Struppi.

        1. Hi Struppi!

          Erst mal Danke für deine schnelle Antwort.
          Nun zu deinen 3 Punkten:

          1. fehlendes href
          Nun, ich könnte ein href schreiben, wenn ich auf eine existierende HTML-Seite linken möchte. Will ich aber gerade nicht. Ich mill ja nicht knapp 80 HTML-Seiten machen, die fast alle gleich aussehen, sondern das Ganze ohne HTML-Seiten lösen. Darum die Funktion Infofenster, die ohne HTML-Datei auskommt und darum auch kein href.
          Man könnte natürlich auch href=javascript:Infofenster(i) schreiben. Aber ich glaube, das ist eher verpönt, was ich so gehört habe.

          2. Der Wert in Anführungszeichen
          Das geht nicht, denn der Quelltext heißt hier:

          document.write ("Person Nummer " + i + " <a onclick=Infofenster(i)>klick!</a><br>")

          Wenn ich Anführungsstriche setze, dann unterbricht er ja die Ausgabe bei document.write. Ich glaube, man kann auch Apostrophs nehmen, aber eigentlich braucht man gar nichts, wenn man keine Leerzeichen benutzt. Und Infofenster(i) hat keine Leerzeichen.
          Korrigiere mich, wenn ich mich irgendwo irre.

          3. i = 3
          Tja, das ist ja das ganze Problem.
          Ich dachte, während er die Schleife durchlaufen läßt, setzt er in die Klammern den aktuellen Wert von i ein. Macht er aber nicht. Er greift immer auf das i zu, wie es am Ende des Javascript-Durchlaufs ist, nämlich 3.

          Ich hoffe, ich konnte mich verständlich machen und genauso hoffe ich, daß du nicht den Mut verlierst und mir immernoch weiterhelfen kannst (und willst).

          mfg, TOBI

          1. Hi Struppi!

            Erst mal Danke für deine schnelle Antwort.
            Nun zu deinen 3 Punkten:

            1. fehlendes href
              Nun, ich könnte ein href schreiben, wenn ich auf eine existierende HTML-Seite linken möchte. Will ich aber gerade nicht. Ich mill ja nicht knapp 80 HTML-Seiten machen, die fast alle gleich aussehen, sondern das Ganze ohne HTML-Seiten lösen. Darum die Funktion Infofenster, die ohne HTML-Datei auskommt und darum auch kein href.
              Man könnte natürlich auch href=javascript:Infofenster(i) schreiben. Aber ich glaube, das ist eher verpönt, was ich so gehört habe.

            Es ist halt ungültiges HTML. Dann benutzt href="#"

            1. Der Wert in Anführungszeichen
              Das geht nicht, denn der Quelltext heißt hier:

            document.write ("Person Nummer " + i + " <a onclick=Infofenster(i)>klick!</a><br>")

            Wenn ich Anführungsstriche setze, dann unterbricht er ja die Ausgabe bei document.write. Ich glaube, man kann auch Apostrophs nehmen, aber eigentlich braucht man gar nichts, wenn man keine Leerzeichen benutzt. Und Infofenster(i) hat keine Leerzeichen.
            Korrigiere mich, wenn ich mich irgendwo irre.

            Du kannst doch Anfühurngszeichen ausgeben. Entweder du maskierst oder du benutzt einfach Anfühfrungszeichen.

            document.write ("Person Nummer " + i

            • ' <a href="#" onclick="Infofenster('
            • i + ');return false;" >klick!</a><br>');
            1. i = 3
              Tja, das ist ja das ganze Problem.
              Ich dachte, während er die Schleife durchlaufen läßt, setzt er in die Klammern den aktuellen Wert von i ein. Macht er aber nicht. Er greift immer auf das i zu, wie es am Ende des Javascript-Durchlaufs ist, nämlich 3.

            Genau und du willst ja den Wert von i haben. siehe oben.

            Ich hoffe, ich konnte mich verständlich machen und genauso hoffe ich, daß du nicht den Mut verlierst und mir immernoch weiterhelfen kannst (und willst).

            Naja, ich wollte eigentlich dass du selber drauf kommst. Aber jetzt müßte es ja gehen, oder?

            Struppi.