Thomas Müller: Value einer Listbox mit Javascript

Hall,

ich habe folgendes Javascript:

<SCRIPT>
<!--
  function hideObject(obj)
  {
   if ( obj.style ) { obj = obj.style; }
   obj.visibility = 'hidden';
  }

function showObject(obj)
  {
   if ( obj.style ) { obj = obj.style; }
   obj.visibility = 'visible';
  }
-->
</SCRIPT>

<SELECT name="eid" size="1" onChange="showObject('eid'+this.form.eid.options[this.form.eid.selectedIndex].value);">
<option value="1">Rennrad
<option value="2">Schwimmen
<option value="3">Laufen
</SELECT>

<DIV id=eid1 style="LEFT: 100px; VISIBILITY: hidden; POSITION: absolute; TOP: 120px">
<TABLE cellSpacing=0 cellPadding=0 border=0 width="100">
  <TBODY>
  <TR>
    <TD class=dropdown>
      <A class=menlink href="news.asp">Alle News</A><BR>
      <A class=menlink href="news.asp?CID=1">Triathlon</A><BR>
      <A class=menlink href="news.asp?CID=2">Duathlon</A><BR>
      <A class=menlink href="news.asp?CID=99">Presse</A><BR>
    </TD>
  </TR>
  </TBODY>
</TABLE>
</DIV>

Abhängig vom ausgewählten Listboxelement soll nun der dazugehörige DIV Tag angezeigt werden. Mein Problem:

Ruf ich showObject(eid1); direkt auf, funktioniert es. Obenstehendes Beispiel funktioniert nicht. Hier wird weder ein JS Fehler ausgegeben, noch das DIV Tag angezeigt.

Woran liegts?

Lg

  1. Hi!

    <SELECT name="eid" size="1" onChange="showObject('eid'+this.form.eid.options[this.form.eid.selectedIndex].value);">

    Da fehlt ein Punkt.

    Ausserdem kannst du noch kürzen: this.form.eid.options[this.form.eid.selectedIndex].value wird zu this[this.selectedIndex].value (ungeprüft).

    Ausserdem wären Debugging-Ausgaben oder Fehlermeldungen (damit meine ich nicht die vom IE) hilfreich.

    Gruß

    Martin

  2. Hallo Thomas Müller,

    <SCRIPT>

    ^ hier fehlt type="text/javascript"

    if ( obj.style ) { obj = obj.style; }
       obj.visibility = 'hidden';

    wenn ich das richtig sehe, ist obj ein String mit der ID. Bau mal hier ein alert(obj) ein. Daher ist die if-Bedingung immer falsch. Schau dir mal document.getElementById an.

    Gruß, Jürgen

    1. Hallo,

      stimmt, wenn ich mir obj mit alert ausgeben lassen, stehen hier zwei paar verschiedene sachen drinnen.

      "document.getElementById", wie ist dies hier zu verwenden?

      Sorry für das "dumme fragen stellen" ...

      Lg
      Thomas

      Hallo Thomas Müller,

      <SCRIPT>
                ^ hier fehlt type="text/javascript"

      if ( obj.style ) { obj = obj.style; }
         obj.visibility = 'hidden';

      wenn ich das richtig sehe, ist obj ein String mit der ID. Bau mal hier ein alert(obj) ein. Daher ist die if-Bedingung immer falsch. Schau dir mal document.getElementById an.

      Gruß, Jürgen

      1. Hi!

        <SCRIPT>  
        <!--[code lang=javascript]  
          function hideObject(obj)  
          {  
           if ( document.getElementById(obj).style ) { document.getElementById(obj).style =  'hidden';  
          }  
        }  
          
          function showObject(obj)  
          {  
           if ( document.getElementById(obj).style ) { document.getElementById(obj).style = 'visible';  
          }  
        }  
        //
        ~~~-->  
        </SCRIPT>  
        <!--Da fehlten noch die Javascript-Kommentarzeichen-->[/code]
        
        -- 
        Selfcode: [ie:{ fl:( br:^ va:) ls:# fo:| rl:( n4:( ss:| de:> js:) ch:? sh:( mo:| zu:)](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%5E+va%3A%29+ls%3A%23+fo%3A%7C+rl%3A%28+n4%3A%28+ss%3A%7C+de%3A%3E+js%3A%29+ch%3A%3F+sh%3A%28+mo%3A%7C+zu%3A%29)
        
        1. Hallo, leider nich nicht.

          Der Firefox sagt noch:
          Fehler: setting a property that has only a getter
          Quelldatei: http://localhost/trimag/triplan/plan.asp?do=newEintrag&UserID=1&Tag=08.06.2005
          Zeile: 33

          Zeile 33:
          if ( document.getElementById(obj).style ) { document.getElementById(obj).style = 'visible';

          Lg
          Tom

          Hi!

          <SCRIPT>

          <!--[code lang=javascript]
            function hideObject(obj)
            {
             if ( document.getElementById(obj).style ) { document.getElementById(obj).style =  'hidden';
            }
          }

          function showObject(obj)
            {
             if ( document.getElementById(obj).style ) { document.getElementById(obj).style = 'visible';
            }
          }
          //

          
          > </SCRIPT>  
          > <!--Da fehlten noch die Javascript-Kommentarzeichen-->[/code]
          
          1. Tag Thomas.

            Fehler: setting a property that has only a getter
            document.getElementById(obj).style = 'visible';

            Du referenzierst auf style, welches seinerseits ein Objekt ist, weswegen du ihm keinen Wert zuweisen darfst ("getter"). Überlege, welche Eigenschaft du setzen willst und suche dir die entsprechende Eigenschaft heraus, die geändert werden soll. Auf der verlinkten Seite wird auch die korrekte Syntax dargestellt.

            Siechfred