Markus: Problem mit JavaScript und php / Schleife

Guten morgen liebe leut'

ich hab ein problem,
und zwar hab ich ne kleine Suchmaschine gebastelt,
die als PopUp von meiner Hauptseite erscheint und Daten aus einer Oracle-DB zieht und in Tabellenform anzeigt.
Einen Wert möchte ich als link haben und diesen wieder an die Hauptseite übergeben.

Die Werte aus der DB werden in einer While-schleife angezeigt:

while ($row =fetch($searchsql->searchresult_apt)){
print "<tr>";
print "<td><a href="search.php" name="link"onClick="show()">".$row['CODE']."</a></td><td>".$row['NAME']."</td><td>AIRPORT</td>";
print "</tr>";
}

Der funktionsaufruf "show" führt folgende funktion aus:

function show()
{
   selectedText = document.anchors["link"].text;
   alert (selectedText);
}

So weit so gut.
Ich bekomme aber, wenn ich auf den Link klicke, immer nur den wert des ERSTEN links. Egal auf welchen ich klicke. Ich verstehe nicht, woran das liegt.
Die Funktion wird doch jedes mal neu aufgerufen und müsste doch für jeden Schleifendurchlauf den entsprechenden Wert ausgeben...

Hoffe, ihr könnt mir helfen...

Viele Grüße

Markus

  1. Moin!

    while ($row =fetch($searchsql->searchresult_apt)){
    print "<tr>";
    print "<td><a href="search.php" name="link"onClick="show()">".$row['CODE']."</a></td><td>".$row['NAME']."</td><td>AIRPORT</td>";
    print "</tr>";
    }

    Du vergibst in der Schleife immer den Namen ("link") und vor dem onClick fehlt ein Leerzeichen.

    function show()
    {
       selectedText = document.anchors["link"].text;
       alert (selectedText);
    }

    anchors ist ein Array. Da der Name "link" mehrfach vorkommt, wird  immer nur der erste angezeigt.

    MfG
    Danny

    1. Alles klaro,

      vielen Dank, dann werde ich das versuchen mit einem
      Zähler zu basteln!

      Viele Grüße aus
      Frankfurt

      Markus

  2. hi,

    selectedText = document.anchors["link"].text;

    Nachdem die gleiche Benennung erkannt ist: bist Du sicher, das auch IE das kann?
    Sonst hilft eventuell solches:
    <html>
    <head>
    <script language="javascript1.2" type="text/javascript">
    function go(id) {
     alert(document.getElementById(id).firstChild.nodeValue);
     //alert(document.anchors[id].text); // Mozilla kennts
    }
    </script>
    </head>
    <body marginheight="0" marginwidth="0"">
    <a name="link1" id="link1" href="#" onclick="go('link1');return false">my_link_1</a>
    <a name="link2" id="link2" href="#" onclick="go('link2');return false">your_link_2</a>
    </body>
    </html>

    Gruesse  Joachim

    1. Hm, das ist ne gute
      Frage, arbeite immer mit Netscape...
      Werde das mal so versuchen.

      Vielen Dank für den Tip!

  3. while ($row =fetch($searchsql->searchresult_apt)){
    print "<tr>";
    print "<td><a href="search.php" name="link"onClick="show()">".$row['CODE']."</a></td><td>".$row['NAME']."</td><td>AIRPORT</td>";
    print "</tr>";
    }

    Warum übergibst du deiner Funktion nicht einfach, das was du willst:

    <a href="search.php"
    onClick="show(this.text)">....</a>

    function show(text)
    {
    alert (text);
    }

    Geht aber nicht im Netscape 4.x

    Struppi.

    1. Hi Struppi,

      onClick="show(this.text)"
      Geht aber nicht im Netscape 4.x

      dito IE
      *bistwohlmozillaverwöhnt*

      Gruesse  Joachim

      1. Hi Struppi,

        onClick="show(this.text)"
        Geht aber nicht im Netscape 4.x
        dito IE
        *bistwohlmozillaverwöhnt*

        Ich hab das so vom OP übernommen.

        so sollte es gehen:

        <a href="test.html" onclick="alert((typeof this.text == 'undefined' ? this.innerText : this.text));return false;">testest</A>

        Struppi.