cy-man: getElementsByName() und iFrame (syntax ?!)

hi!

ich habe unten zu einem prob gepostet. Sorgenkind Mech hat mir auch ein lösungsvorschlag gegeben, nur funktioniert er irgendwie nicht richtig.

ich habe einen iframe, der heißt "rechts". in diesem iframe wird eine html geladen, die ein verstecktes feld names "ziel" und einen wert (value="zuvieldienst2.htm").

sieht so aus:

<input type="hidden" name="ziel" value="zuvieldienst2.htm">

ausserhalb des iframes, in der html wo er definiert ist, ist folgendes script im <head>-tag:

<script language="JavaScript">
function gehezu(link) {
parent.rechts.document.getElementByName("ziel").value=link;
}
</script>

mit einem link (dieser ist nicht im iframe!) versuche ich nun, diese seite (zuvieldienst2.htm) im iframe zu laden.

<a href="javascript:gehezu(link)" target="rechts">nächste seite</a>

geht aber nicht. was mache ich falsch vom syntax her?

danke schon ma ....

cy

  1. Hallo,

    parent.rechts.document.getElementByName("ziel").value=link;

    Die Methode getElementsByName() (Elements, nicht Element!) gibt die Collection (also ein Array) der mit einem bestimmten Wert des name-Attributes benannten Elemente zurueck, also muss der Zugriff ueber den jeweiligen Index erfolgen:

    parent.rechts.document.getElementsByName("ziel")[0].value=link;

    bzw. DOM-konformer:

    parent.rechts.document.getElementsByName("ziel").item(0).value=link;

    Der Index laeuft von 0 bis document.getElementsByName("...").length-1.

    Mehr dazu unter http://www.styleassistant.de/tips/tip45.htm.

    MfG, Thomas

    1. hi!

      danke für den tip: meine javascript debuger bringt jetzt nur noch einen fehler:

      http://localhost/
      Javascript URL thread: "javascript:gehezu(link)"
      Error:
      name: ReferenceError
      message: Statement on line 1: Reference to undefined variable: No such variable 'link'
      Backtrace: In unknown script gehezu(link);

      hat noch jemand 'ne ahnung was da los ist?!

      cy

    2. mhh, entweder sind die experten heute nicht da oder es hat keiner lust zu antworten ...

      jedenfalls geht das auslesen der variable aus dem frame nun:

      <script language="JavaScript">
      function gehezu() {
      var link=parent.rechts.document.test.ziel.value;
      }
      </script>

      wenn ich einen button mit dem verweis: alert(link) mache zeigt er mit in einer box die variable aus dem frame an. schön ...

      mein problem ist nur noch, wie bekomme ich das als link hin. wenn ich <a href="javascript:gehezu('link')" target="rechts">test</a> mache, gibt es einen fehler.

      wo liegt mein problem?

      regz cy

      1. Moin!

        wenn ich einen button mit dem verweis: alert(link) mache zeigt er mit in einer box die variable aus dem frame an. schön ...

        mein problem ist nur noch, wie bekomme ich das als link hin. wenn ich <a href="javascript:gehezu('link')" target="rechts">test</a> mache, gibt es einen fehler.

        Warum hast du überhaupt diese komplizierte Konstruktion mit dem Formularfeld etc.?

        Üblicherweise gibst du dem IFrame einen Namen. Und genau diesen Namen kannst du im Link als target angeben. Und dann gibst du einfach noch das Linkziel als URL an, und fertig ist.

        wo liegt mein problem?

        Ich weiß es nicht. Vermutlich suchst du location.href='linkziel' oder so.

        - Sven Rautenberg

        --
        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
        1. hi!

          Warum hast du überhaupt diese komplizierte Konstruktion mit dem Formularfeld etc.?

          naja, weil ich jeder seite im iframe eine nächste seite zuweisen will. und am besten geht das, wenn ich in ein verstecktes feld den namen der nächsten htm als value="%seite%" rein schreibe.

          Ich weiß es nicht. Vermutlich suchst du location.href='linkziel' oder so.

          ich will ja nur, dass wenn ich einen link mache, er den aus der variable des javascript nimmt:

          <a href="%variable link aus dem javascript">link</a>

          oder

          <a href="javascript:gehezu('link')">link</a>

          das geht aber nicht so bei mir!!

          hier nochmal das script:

          <script language="JavaScript">
          function gehezu() {
          var link=parent.rechts.document.test.ziel.value;
          alert(link);
          }
          </script>

          die alert box zeigt mir die richtige variable an, das geht also! und nun als <a href=" ... dings .... BITTE!!!

          cy

          1. Moin!

            ich will ja nur, dass wenn ich einen link mache, er den aus der variable des javascript nimmt:

            <a href="%variable link aus dem javascript">link</a>

            oder

            <a href="javascript:gehezu('link')">link</a>

            Du willst http://selfhtml.teamone.de/javascript/objekte/location.htm#href.

            Den Wert aus dem Feld an location.href (des richtigen Fensters) zuweisen.

            - Sven Rautenberg

            --
            ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
            1. hallo!

              hee genau das isses ... funktioniert gut, nur ist noch das problem mit dem target. ohne geht es 1A SUPER EDEL KLASSR - wenn ich dann aber <a href="javascript:Wunsch()" target="frame">Wunschverweis</a> schreibe geht es nicht mehr.

              gibt's da auch noch 'ne lösung?! *hoff*

              cy

              1. ALLES KLAR, habe mal versucht einfach statt window. den frame hinzuschreiben und es geht!! DANKE!!!

                ich bin echt froh, dass es leute gibt wie dich !!!

  2. hi!

    hey!
    richtig lesen:

    ich habe unten zu einem prob gepostet. Sorgenkind Mech hat mir auch ein lösungsvorschlag gegeben, nur funktioniert er irgendwie nicht richtig.

    ich hab es selbst ausprobiert

    ich habe einen iframe, der heißt "rechts". in diesem iframe wird eine html geladen, die ein verstecktes feld names "ziel" und einen wert (value="zuvieldienst2.htm").

    jup

    sieht so aus:

    <input type="hidden" name="ziel" value="zuvieldienst2.htm">

    auch ok

    ausserhalb des iframes, in der html wo er definiert ist, ist folgendes script im <head>-tag:

    <script language="JavaScript">
    function gehezu(link) {
    parent.rechts.document.getElementByName("ziel").value=link;
    }
    </script>

    1. hab ich nicht geschrieben, dass die funktion eine variable verlangt, welche in deinem falle "link" wäre
    zweitens habe ich geschrieben parent.frames.rechts...
    übrigens würdest du damit dem verborgenen feld einen wert zuweisen, glaube ich

    mit einem link (dieser ist nicht im iframe!) versuche ich nun, diese seite (zuvieldienst2.htm) im iframe zu laden.

    <a href="javascript:gehezu(link)" target="rechts">nächste seite</a>

    2. schrieb ich, dass du KEIN target angeben darfst

    geht aber nicht. was mache ich falsch vom syntax her?

    danke schon ma ....

    cy

    anz einfach, richtig lesen .... hab mir so viel mühe gegeben ;(

    naja, hoffe du hast es mittlerweile

    gruß