Matthias: dynamische variable

Hallo zusammen

Ich plage mich mit folgendem Problem herum.

Innerhalb einer HTML Page stehen jeweils für eine Auswertung drei Jahre (zur Zeit 2004/2005/2006) zur Verfügung. Da es sich bei diesen Jahreszahlen jeweils um das gerade vergangene, das aktuelle und das nächste handelt Jahr, möchte ich diese nicht hard codieren, sondern von der Systemzeit ableiten.

Mittels dem JS:

<script language="JavaScript" type="text/javascript">
function refreshYear()
{
document.BUSinput.BUSJ.options[0].text = today.getFullYear() - 1;
document.BUSinput.BUSJ.options[1].text = today.getFullYear();
document.BUSinput.BUSJ.options[2].text = today.getFullYear() + 1;
}
</script>

ist es mir auch möglich die Jahreszahlen auf dem HTML Page auszugeben.

Nun muss ich die Jahreszahlen aber zusätzlich noch an das Programm (WebFOCUS) welches die Daten auswertet übergeben. Leider habe ich nicht wirklich einen Plan, wie dies bewerkstelligt werden könnte und mittels try and error bin ich bisher auch zu keiner Lösung gekommen.
Mein aktueller Code präsentiert sich zur Zeit so:

<td width="10%"><select size="1" name="BUSJ" onMouseover="refreshYear()">
<option value="+lastYear"> Jahr </option>
<option value="+actualYear" selected> Jahr </option>
<option value="+nextYear"> Jahr </option>
</select></td>

wobei ich den Variablen lastYear, usw. in einem JS Werte zuweise, was auch funktioniert, da ich mit z.B. document.write(lastYear) den Wert 2004 ausgegeben bekomme.
Ebenfalls funktioniert die Auswertung vom feinsten, wenn ich anstelle des Variablennamens, value="2004" codiere.

Für Hilfe und Tipps danke ich Euch im Voraus.

  1. Nun muss ich die Jahreszahlen aber zusätzlich noch an das Programm (WebFOCUS) welches die Daten auswertet übergeben. Leider habe ich nicht wirklich einen Plan, wie dies bewerkstelligt werden könnte und mittels try and error bin ich bisher auch zu keiner Lösung gekommen.

    wieso probieren? Du kennst selfhtml? Da steht doch alles was du brauchst:

    Du willst den Wert oder den selectedIndex einer Optionsliste ändern:
    http://de.selfhtml.org/javascript/objekte/options.htm

    <td width="10%"><select size="1" name="BUSJ" onMouseover="refreshYear()">

    onmouseover?

    Struppi.

    1. Hallo Struppi

      Herzlichen Dank für Deine Hilfe.
      Das Ding läuft nun wie geschmiert.
      Gruss und einen schönen Nachmittag.

      Matthias

  2. Hallo,

    Mein aktueller Code präsentiert sich zur Zeit so:

    <td width="10%"><select size="1" name="BUSJ" onMouseover="refreshYear()">
    <option value="+lastYear"> Jahr </option>
    <option value="+actualYear" selected> Jahr </option>
    <option value="+nextYear"> Jahr </option>
    </select></td>

    wobei ich den Variablen lastYear, usw. in einem JS Werte zuweise, was auch funktioniert, da ich mit z.B. document.write(lastYear) den Wert 2004 ausgegeben bekomme.
    Ebenfalls funktioniert die Auswertung vom feinsten, wenn ich anstelle des Variablennamens, value="2004" codiere.

    Ich verstehe deine Frage nicht ganz. Mit options[0].text = ... usw. setzt du nicht nur die sichtbare Beschriftung der Option, sondern auch implizit deren Wert (value), sofern kein anderslautendes value-Attribut gesetzt ist. Du könntest das value-Attribut also einfach weglassen.
    Oder ist deine Frage, wie du auch den value explizit setzen kannst, also z.B. von »+lastYear« auf »2004«? Das ginge analog über options[0].value usw.
    http://de.selfhtml.org/javascript/objekte/options.htm#value

    Mathias

    1. Hallo molily

      Herzlichen Dank für Deine Hilfe und Deinen Tipp.
      Dein Vorschlag den value einfach wegzulassen, war die einfachste und kürzeste Lösung und funktioniert auch vom feinsten.

      Gruss und einen schönen Nachmittag.

      Matthias

  3. Hi,

    Nun muss ich die Jahreszahlen aber zusätzlich noch an das Programm (WebFOCUS) welches die Daten auswertet übergeben. Leider habe ich nicht wirklich einen Plan, wie dies bewerkstelligt werden könnte und mittels try and error bin ich bisher auch zu keiner Lösung gekommen.

    Abgesehen davon, das IMHO Javascript da nicht optimal ist, da es auf die Clientzeit zugreift, bietet sich z.B. folgende (DOM) Loesungen an:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
    <html>
    <head>
    </head>
    <body>
    <form name="out">
        <input id="rd1" name="rd" type="radio" value=""><span id="sp1"></span>
        <input id="rd2" name="rd" type="radio" value=""><span id="sp2"></span>
        <input id="rd3" name="rd" type="radio" value=""><span id="sp3"></span><br><br>
        <input type="submit" value="wech">
    </form>
    <script type="text/javascript">
        var akt_date =  new Date();
        var year     =  akt_date.getFullYear();
        for (var i = 0; i < document.out.rd.length; i++) {
            document.getElementById("rd" + (i +1)).setAttribute("value",year + (i -1));
            temp =  document.createTextNode(year + (i -1));
            document.getElementById("sp" + (i +1)).appendChild(temp);
        }
    </script>
    </body>
    </html>

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
  4. Herzlichen Dank an alle welche mir weitergeholfen haben.
    Die Übergabe der Variable funktioniert inzwischen einwandfrei.

    Gruss Matthias