patrick blank: Auswahlliste kommentieren...

Ich habe eine Auswahlliste, deren Inhalte ich gerne über onclick in mehreren read-only Eingabefeldern kommentieren würde.

Konkreter Aufgabe:

In der Auswahlliste erscheinen verschiedene Buchtitel. Wird einer davon markiert, so erscheinen in drei danebenliegenden
Eingabefeldern Informationen wie Autor, Datum der Veröffentlichung, oder ein Kommentar.
Wird ein anderer Buchtitel markiert, so werden die Eigabefelder entsprechend aktualisiert.

Hat jemand eine Idee, wie ich die Kommentatare dazu festhalten, und an das Eingabefeld übergeben kann?

...

Ich habe das schon mal im September gepostet und auch eine sehr gute Anregung dazu bekommen. (Danke, Chris...)

Aber irgendwie will es nicht...

<html>
<head>
<title>Kommentierte Auswahlliste</title>
<meta name="author" content="blankP">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<script language="JavaScript">
<!--
function dateiinfo(autor, datum, seitenzahl)
{
document.liste.autor.value = autor;
document.liste.datum.value = datum;
document.liste.seitenzahl.value = seitenzahl;
}
-->
</script>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
Bücherliste

<FORM name="liste">
<select name=150>
<option value=Buch001.pdf onClick="dateiinfo('J. W. von Goethe','21.01.00','86')">Die Leiden des jungen Werther</option>

<option value=Buch002.pdf onClick="dateiinfo('J.R.R. Tolkin','02.06.00','52')">Der Herr der Ringe</option>

<option value=Buch003.pdf onClick="dateiinfo('Friedrich Schiller','13.06.00','51')">Die Räuber</option>
</select>
<table>
<tr>
<td width=290></td>
<td><input type=text name="autor" size=30 maxlenth=30 readonly></input><p>Autor</p></td>
</tr>
<tr><td></td>
<td><input type=text name="datum" size=10 maxlenth=10 readonly></input><p>Anschaffungsdatum</p></td>
</tr><tr><td></td>
<td><input type=text name="seitenzahl" size=10 maxlenth=10 readonly></input><p>Seitenzahl</p></td>
</tr></form>
</table></center></div></body></html>

Was stimmt hier nicht?

Wie immer in ewiger Dankbarkeit...

patrick

  1. hi,
    ich habe damit ein wenig rumgespielt und so ungefähr könnte das funktionieren:
    <html>
    <head>
    <title>Kommentierte Auswahlliste</title>
    <meta name="author" content="blankP">
    <meta name="generator" content="Ulli Meybohms HTML EDITOR">
    <script language="JavaScript">
    <!--
    function dateiinfo(autor, datum, seitenzahl)
    {

    document.liste.autor.value = autor;
    document.liste.datum.value = datum;
    document.liste.seitenzahl.value = seitenzahl;
    }
    //-->
    </script>
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    Bücherliste

    <FORM name="liste">
    <select name=selliste onChange="dateiinfo('J. W. von Goethe','21.01.00','86')">
    <option value="0" selected>wählen</option>
    <option value="1" >Die Leiden des jungen Werther</option>

    <option value="2" onClick="dateiinfo('J.R.R. Tolkin','02.06.00','52')">Der Herr der Ringe</option>

    <option value="3" onClick="dateiinfo('Friedrich Schiller','13.06.00','51')">Die Räuber</option>
    </select>
    <table>
    <tr>
    <td width=290></td>
    <td><input type=text name="autor" size=30 maxlenth=30 readonly><p>Autor</p></td>
    </tr>
    <tr><td></td>
    <td><input type=text name="datum" size=10 maxlenth=10 readonly><p>Anschaffungsdatum</p></td>
    </tr><tr><td></td>
    <td><input type=text name="seitenzahl" size=10 maxlenth=10 readonly><p>Seitenzahl</p></td>
    </tr>
    </table>
    </form>
    </body></html>

    vieleicht guckst du dir einmal in selfhtml die entsprechenden seiten
    an

    thk

    1. Hi
      So kann das auch nur (wenn ueberhaupt) mit dem IE klappen, da Netscape in <option> kein onclick kennt!
      Ausserdem weiss ich nicht, wie der IE darauf reagiert, denn so wie das geschrieben ist, wird beim klicken auf einen Unterpunkt onclick was geaendert und ausserdem onchange. Je nachdem ob der IE zuerst onclick, oder onselect ausfuehrt, wird entweder das gewuenschte Ergebnis angezeigt, oder die per onchange gewaehlten Standarteinstellungen ('J. W. von Goethe','21.01.00','86')
      Ich wuerde das folgendermassen loesen:
      Die Infos zu den Buechern wuerde ich in drei Arrays speichern, und dann einfach onchange die passenden Infos in die inputs schreiben.
      Also so;
      <html>
      <head>
      <title>Kommentierte Auswahlliste</title>
      <meta name="author" content="blankP">
      <meta name="generator" content="Ulli Meybohms HTML EDITOR">
      <script language="JavaScript">
      <!--
      autor=new Array();
      datum=new Array();
      seitenzahl=new Array();
      autor[1]="J. W. von Goethe";
      autor[2]="J.R.R. Tolkin";
      autor[3]="Friedrich Schiller";
      datum[1]="21.01.00";
      datum[2]="02.06.00";
      datum[3]="13.06.00";
      seitenzahl[1]="86";
      seitenzahl[2]="52";
      seitenzahl[3]="51";
      function dateiinfo(index)
      {
      if (index!=0){
      document.liste.autor.value = autor[index];
      document.liste.datum.value = datum[index];
      document.liste.seitenzahl.value = seitenzahl[index];}
      }
      //-->
      </script>
      </head>
      <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
      Bücherliste

      <FORM name="liste">
      <select name=selliste onChange="dateiinfo(this.form.selliste.selectedIndex)">
      <option value="0">wählen</option>
      <option value="1">Die Leiden des jungen Werther</option>

      <option value="2">Der Herr der
      Ringe</option>

      <option value="3">Die Räuber</option>
      </select>
      <table>
      <tr>
      <td width=290></td>
      <td><input type=text name="autor" size=30 maxlenth=30 readonly><p>Autor</p></td>
      </tr>
      <tr><td></td>
      <td><input type=text name="datum" size=10 maxlenth=10 readonly><p>Anschaffungsdatum</p></td>
      </tr><tr><td></td>
      <td><input type=text name="seitenzahl" size=10 maxlenth=10 readonly><p>Seitenzahl</p></td>
      </tr>
      </table>
      </form>
      </body></html>
      Tschau Holger

      1. Danke Holger, das der Netscape kein onClick in option erkennt, erklärt vieles...

        Deine Lösung gefällt mir sehr und ich kann sie bei einem ähnlichen Problem auch brauchen.

        Der Haken ist jedoch, daß ich die Buchliste zur Zeit in Excel führe.

        Ich lese dort mit einem Makro die Dateien in einem Verzeichnis ein und zerhacke den Dateinamen in Autor, Titel etc. Excel bastelt mir daraus dann den html Code für das Auswahlfeld. Ein weiteres Makro speichert den Code in eine Textdatei, der ich dann mit Hilfe eines Batchprogramms einen Kopf und einen Fuß hinzufüge. Fertig ist meine html Seite.

        Da ich die Excelseite ausschließlich auf den html Code des Auswahlfeldes beschränken möchte, müsste ich die Dateiinformationen in diesem Bereich ablegen.

        Ich bin also weiterhin ratlos...

        Hast Du einen anderen Vorschlag?

        patrick

        1. Hi
          Warum definierst du dann nicht einfach einen Javascript Teil direkt nach dem select, wo du den Arrays die Werte zuweist.
          Also so:
          <select name=selliste onChange="dateiinfo(this.form.selliste.selectedIndex)">
          <option value="0">wählen</option>
          <option value="1">Die Leiden des jungen Werther</option>
          <option value="2">Der Herr der
          Ringe</option>
          <option value="3">Die Räuber</option>
          </select>
          <script language="JavaScript">
          <!--
          autor=new Array();
          datum=new Array();
          seitenzahl=new Array();
          autor[1]="J. W. von Goethe";
          autor[2]="J.R.R. Tolkin";
          autor[3]="Friedrich Schiller";
          datum[1]="21.01.00";
          datum[2]="02.06.00";
          datum[3]="13.06.00";
          seitenzahl[1]="86";
          seitenzahl[2]="52";
          seitenzahl[3]="51";
          //-->
          </script>

          Tschau Holger

        2. Hi
          Warum definierst du dann nicht einfach einen Javascript Teil direkt nach dem select, wo du den Arrays die Werte zuweist.
          Also so:
          <select name=selliste onChange="dateiinfo(this.form.selliste.selectedIndex)">
          <option value="0">wählen</option>
          <option value="1">Die Leiden des jungen Werther</option>
          <option value="2">Der Herr der
          Ringe</option>
          <option value="3">Die Räuber</option>
          </select>
          <script language="JavaScript">
          <!--
          autor=new Array();
          datum=new Array();
          seitenzahl=new Array();
          autor[1]="J. W. von Goethe";
          autor[2]="J.R.R. Tolkin";
          autor[3]="Friedrich Schiller";
          datum[1]="21.01.00";
          datum[2]="02.06.00";
          datum[3]="13.06.00";
          seitenzahl[1]="86";
          seitenzahl[2]="52";
          seitenzahl[3]="51";
          //-->
          </script>
          oder so:

          Tschau Holger

      2. Hi
        So kann das auch nur (wenn ueberhaupt) mit dem IE klappen, da Netscape in <option> kein onclick kennt!
        Ausserdem weiss ich nicht, wie der IE darauf reagiert, denn so wie das geschrieben ist, wird beim klicken auf einen Unterpunkt onclick was geaendert und ausserdem onchange. Je nachdem ob der IE zuerst onclick, oder onselect ausfuehrt, wird entweder das gewuenschte Ergebnis angezeigt, oder die per onchange gewaehlten Standarteinstellungen ('J. W. von Goethe','21.01.00','86')
        Ich wuerde das folgendermassen loesen:
        Die Infos zu den Buechern wuerde ich in drei Arrays speichern, und dann einfach onchange die passenden Infos in die inputs schreiben.
        Also so;
        <html>
        <head>
        <title>Kommentierte Auswahlliste</title>
        <meta name="author" content="blankP">
        <meta name="generator" content="Ulli Meybohms HTML EDITOR">
        <script language="JavaScript">
        <!--
        autor=new Array();
        datum=new Array();
        seitenzahl=new Array();
        autor[1]="J. W. von Goethe";
        autor[2]="J.R.R. Tolkin";
        autor[3]="Friedrich Schiller";
        datum[1]="21.01.00";
        datum[2]="02.06.00";
        datum[3]="13.06.00";
        seitenzahl[1]="86";
        seitenzahl[2]="52";
        seitenzahl[3]="51";
        function dateiinfo(index)
        {
        if (index!=0){
        document.liste.autor.value = autor[index];
        document.liste.datum.value = datum[index];
        document.liste.seitenzahl.value = seitenzahl[index];}
        }
        //-->
        </script>
        </head>
        <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
        Bücherliste

        <FORM name="liste">
        <select name=selliste onChange="dateiinfo(this.form.selliste.selectedIndex)">
        <option value="0">wählen</option>
        <option value="1">Die Leiden des jungen Werther</option>

        <option value="2">Der Herr der
        Ringe</option>

        <option value="3">Die Räuber</option>
        </select>
        <table>
        <tr>
        <td width=290></td>
        <td><input type=text name="autor" size=30 maxlenth=30 readonly>

        Autor</p></td>
        </tr>
        <tr><td></td>
        <td><input type=text name="datum" size=10 maxlenth=10 readonly>

        Anschaffungsdatum</p></td>
        </tr><tr><td></td>
        <td><input type=text name="seitenzahl" size=10 maxlenth=10 readonly>

        Seitenzahl</p></td>
        </tr>
        </table>
        </form>
        </body></html>
        Tschau Holger

        ja, ja, ist schon klar ich hatte nur keinen bock den gesamten code umzuschreiben, sondern wollte dem fragesteller einen ansatz geben wie es funktionieren könnte.
        thk

  2. Vielen Dank an alle Beteiligten,

    ich denke ich habe verstanden. Jetzt stellen sich mir nur noch 2 Fragen:

    Wie kann ich die Array Nummern gegen Bezeichnungen wie "BK-001.pdf" austauschen?

    Ich habe nämlich durchnummerierte Dateinamen...

    Bsp.:

    <option value="BK-001.pdf">Der Herr der Ringe</option>

    autor[BK-001.pdf]="J.R.R. Tolkin";
    datum[BK-001.pdf]="13.06.32";
    seitenzahl[BK-001.pdf]="800 Seiten";

    Und die zweite Frage:

    Warum klappt es nicht mit name=150 aber mit Name="sellliste"? (siehe unten...)

    <select name="150" onChange="dateiinfo(this.form.selliste.selectedIndex)">

    <select name="selliste" onChange="dateiinfo(this.form.selliste.selectedIndex)">

    Vielen Dank für eure Aufmerksamkeit... :)))

    1. Hallo,

      Wie kann ich die Array Nummern gegen Bezeichnungen wie "BK-001.pdf" austauschen?

      Wie wäre es mit einer Funktion, die aus dem Dateinamen die Nummer extrahiert?
      Dann statt
      autor[BK-001.pdf]="J.R.R. Tolkin";
      eben
      autor[extractNumberFromName("BK-001.pdf")]

      Warum klappt es nicht mit name=150 aber mit Name="sellliste"? (siehe unten...)

      Weil 150 eine Zahl und kein Name ist. Namen müssen mit Buchstaben (oder, IIRC Unterstrich) beginnen.

      cu,
      Andreas

  3. Also, dank der tatkräftigen Hilfe der Besucher des Forums, ist es mir endlich gelungen die Sache zum laufen zu bringen.

    Und das Tollste, ich habe sogar verstanden wie das Ding funktioniert.

    Großes Lob an alle Beteiligten!!!

    Vielleicht seid ihr euch dessen nicht bewußt, aber das selfhtml Forum genießt "da draußen" einen irrsinnig guten ruf. Zu Recht wie ich meine!!!

    Wenn ich mal soweit bin, daß ich genug von der Materien begreife, daß ich hier ebenfalls wirken kann, wird es mir eine Ehre sein mich hier einzubringen.

    Bis dahin,

    DANKE

    patrick