Innuendo: Knifflig - was für Tüfftler

Hallo!

ich habe folgendes Problem.

Ich habe ein Framset und möchte über ein Formular den oberen Frame "füttern".

In meinem IE 6.0 funkt es hervorragend, ABER leider nicht im IE 5.0.

Hier das Script:

<form name="beamup">
<input type="hidden" name="liste" value="Test"></form>

<script language="JavaScript">

function hinzufuegen(ziel)
 {
 //Werte und Text für neue Option zuteilen
 var neuereintrag = new Option()
 neuereintrag.value = document.beamup.liste.value;
 neuereintrag.text  = document.beamup.liste.value;
 //Neue Option eintragen
 ziel.options[ziel.options.length] = neuereintrag;
 }

hinzufuegen(parent.menu.formlist.listbox);
 </script>

Wobei menu der Name des Frames ist.

Die Fehlermeldung lautet, dass ziel.options.length kein Objekt bzw. Eigenschaft ist.

Hat jemand einen Tipp für mich?

  1. Hallo!

    ich habe folgendes Problem.

    Ich habe ein Framset und möchte über ein Formular den oberen Frame "füttern".

    In meinem IE 6.0 funkt es hervorragend, ABER leider nicht im IE 5.0.

    Hier das Script:

    <form name="beamup">
    <input type="hidden" name="liste" value="Test"></form>

    <script language="JavaScript">

    function hinzufuegen(ziel)
    {
    //Werte und Text für neue Option zuteilen
    var neuereintrag = new Option()
    neuereintrag.value = document.beamup.liste.value;
    neuereintrag.text  = document.beamup.liste.value;
    //Neue Option eintragen
    ziel.options[ziel.options.length] = neuereintrag;
    }

    hinzufuegen(parent.menu.formlist.listbox);
    </script>

    Wobei menu der Name des Frames ist.

    Die Fehlermeldung lautet, dass ziel.options.length kein Objekt bzw. Eigenschaft ist.

    Hat jemand einen Tipp für mich?

    Bist Du sicher, daß Du das Objekt auch "triffst"? Prüf' das doch mal nach mit onClick = "javascript:alert(this.name)" und alert(parent.name)...

    Verstehst Du was ich meine?

    cu
      Graphity

    1. Hallo,

      sodala, ich habe jetzt folgendes ausprobiert:

      ich habe mir die Länge des ziel.options ausgeben lassen:

      mit alert(parent.menu.formlist.listbox.options.length);
      Das funkt hervorragend.

      Es scheitert einfach nur am ersten, an "ziel.options"[ziel.options.length] = neuereintrag;

      Es ist zum *ausderhautfahren*

      sl,
      Innuendo

      Hallo!

      ich habe folgendes Problem.

      Ich habe ein Framset und möchte über ein Formular den oberen Frame "füttern".

      In meinem IE 6.0 funkt es hervorragend, ABER leider nicht im IE 5.0.

      Hier das Script:

      <form name="beamup">
      <input type="hidden" name="liste" value="Test"></form>

      <script language="JavaScript">

      function hinzufuegen(ziel)
      {
      //Werte und Text für neue Option zuteilen
      var neuereintrag = new Option()
      neuereintrag.value = document.beamup.liste.value;
      neuereintrag.text  = document.beamup.liste.value;
      //Neue Option eintragen
      ziel.options[ziel.options.length] = neuereintrag;
      }

      hinzufuegen(parent.menu.formlist.listbox);
      </script>

      Wobei menu der Name des Frames ist.

      Die Fehlermeldung lautet, dass ziel.options.length kein Objekt bzw. Eigenschaft ist.

      Hat jemand einen Tipp für mich?

      Bist Du sicher, daß Du das Objekt auch "triffst"? Prüf' das doch mal nach mit onClick = "javascript:alert(this.name)" und alert(parent.name)...

      Verstehst Du was ich meine?

      cu
        Graphity

      1. Hallo,

        sodala, ich habe jetzt folgendes ausprobiert:

        ich habe mir die Länge des ziel.options ausgeben lassen:

        mit alert(parent.menu.formlist.listbox.options.length);
        Das funkt hervorragend.

        Es scheitert einfach nur am ersten, an "ziel.options"[ziel.options.length] = neuereintrag;

        Es ist zum *ausderhautfahren*

        sl,
        Innuendo

        Könntest Du die drei Seiten per e-Mail schicken? Vielleicht kann ich dann besser helfen. Am besten als .zip

        cu
          Graphity

  2. Hej,

    1. kann .listbox wirklich so verwendet werden?
    2. schau doch mal unter der JS-Script Doku nach, wie Du unter options die length eigenschaft ansprechen kannst. Da müßte options nach meiner Ansicht raus:
    <a href="http://selfhtml.teamone.de/javascript/objekte/options.htm#length">href="http://selfhtml.teamone.de/javascript/objekte/options.htm#length</a>

    Marko

    Hallo!

    ich habe folgendes Problem.

    Ich habe ein Framset und möchte über ein Formular den oberen Frame "füttern".

    In meinem IE 6.0 funkt es hervorragend, ABER leider nicht im IE 5.0.

    Hier das Script:

    <form name="beamup">
    <input type="hidden" name="liste" value="Test"></form>

    <script language="JavaScript">

    function hinzufuegen(ziel)
    {
    //Werte und Text für neue Option zuteilen
    var neuereintrag = new Option()
    neuereintrag.value = document.beamup.liste.value;
    neuereintrag.text  = document.beamup.liste.value;
    //Neue Option eintragen
    ziel.options[ziel.options.length] = neuereintrag;
    }

    hinzufuegen(parent.menu.formlist.listbox);
    </script>

    Wobei menu der Name des Frames ist.

    Die Fehlermeldung lautet, dass ziel.options.length kein Objekt bzw. Eigenschaft ist.

    Hat jemand einen Tipp für mich?

    1. Hallo Marko,

      1. kann .listbox wirklich so verwendet werden?

      Ja, warum denn nicht? listbox ist schließlich nur der Name meiner Listbox. Hatte aber auch schon den Namen test, also daran kanns nicht liegen

      1. schau doch mal unter der JS-Script Doku nach, wie Du unter options die length eigenschaft ansprechen kannst. Da müßte options nach meiner Ansicht raus:
        <a href="http://selfhtml.teamone.de/javascript/objekte/options.htm#length">href="http://selfhtml.teamone.de/javascript/objekte/options.htm#length</a>

      da steht es nur genauso drinnen wie ich es verwende.

      Das script sieht jetzt schon so aus:

      //Werte und Text für neue Option zuteilen
       var neuereintrag = new Option(document.beamup.liste.value, document.beamup.liste.value, false, true)
      //auslesen der länge - funkt auch
       laenge = parent.menu.formlist.listbox.options.length;

      //einfach nur zum testen, das funkt ohne weiteres
       parent.frames[0].document.forms[0].hias.value = 'af';
      //Neue Option eintragen
       parent.menu.document.forms[0].listbox.options[laenge] = neuereintrag;

      wenn ich die letzte Zeile abändere auf:
       document.forms[0].listbox.options[laenge] = neuereintrag;

      und in diesem Frame das gleiche Formular habe, geht es auch.

      parent.menu.document.forms[0].listbox.options[laenge] = neuereintrag;

      Shit happens?

      sl,
      Innuendo