Joegr: setTimeout Varibalenübergabe falsch?

Hallo,

hat jemand eine Idee? Der Button <input type="button" value="HELP!" onClick="showHelp('helpupload')"> blendet das Bild mit der ID: helpupload ein. Dieses soll nach 5 Sekunden automatisch wieder ausgeblendet werden. Die Variable "theme" ist dann in setTimeout() nicht mehr bekannt. Habe mal vrsucht Sie nach dem ersten Aufruf zu deklarieren, so dass sie global verfügbar wird:

function showHelp(theme){
 var neu = theme;
 ...
}

... und dann in der Funktion closeHelp() die var "theme" durch "neu" ersetzt, klappt nicht :-( Woran liegts?

<script type="text/javascript">
 function showHelp(theme){
    x = document.getElementById(theme);
    x.style.display = 'inline';
    setTimeout("closeHelp(theme)", 5000);
   }

function closeHelp(theme){
    x = document.getElementById(theme);
    x.style.display = 'none';
   }
</script>

<img id="helpupload" src="helpme_close.gif" alt="" style="display:none">

<input type="button" value="HELP!" onClick="showHelp('helpupload')">

Gruß
Jörg

  1. Hallo!

    function showHelp(theme){
    var neu = theme;
    ...
    }

    Weil es bei Dir eine Variable der Funkton showHelp() ist und nicht global verfügbar.

    var neu = "";
    function showHelp(theme){
    neu = theme;
    ...
    }

    Schönen Gruß

    Afra

    1. Danke, funktioniert. Ich war der Meinung, dass wenn ich eine Variable in einer Funktion explizit mit var deklariere, diese dann auch außerhalb zur Verfügung steht. So kann man sich irren ..

      Gruß
      Jörg

      Hallo!

      function showHelp(theme){
      var neu = theme;
      ...
      }

      Weil es bei Dir eine Variable der Funkton showHelp() ist und nicht global verfügbar.

      var neu = "";
      function showHelp(theme){
      neu = theme;
      ...
      }

      Schönen Gruß

      Afra

      1. Hellihello

        Danke, funktioniert. Ich war der Meinung, dass wenn ich eine Variable in einer Funktion explizit mit var deklariere, diese dann auch außerhalb zur Verfügung steht. So kann man sich irren ..

        Genau das Gegenteil ist der Fall bei Javascript.

        frankx

  2. Hallo,

      
    
    >  function showHelp(theme){  
    >     x = document.getElementById(theme);  
    >     x.style.display = 'inline';  
    
           setTimeout("closeHelp('"+theme+"')", 5000);  
    
    >    }  
    
    

    Gruß aus Berlin!
    eddi

    --
    Ed is' nischt neuet - ed heißt je'ß' nua anda's