B4rnY: Unglückliche Versuche!

Hi, ich probiere wie schon öfter ein Objekt mit javascript alle 80 millisekunden ein wenig nach links zu bewegen, bissher ohne erfolg.

  
<html>  
<head>  
</head>  
<script text="type/javascript">  
<!--  
var p = document.getElementById("lala");  
var left = 0;  
function close() {  
   left++;  
   if (p.style.left != "-60px") {  
       p.style.left = "-" + left + "px";  
   }  
   setTimeout("close();", 80);  
}  
//-->  
</script>  
<style type="text/css">  
body{margin: 0; padding: 0;}  
#close{background: #444444; padding: 25px 5px 25px 5px; float: right; -moz-border-radius: 5px; cursor: pointer;}  
#close:hover{background: #555555;}  
#panel{height: 60px; width: 350px; margin: 100px 0 0 -20px; left: 0; position: absolute; top: 0; opacity: 0.9; background: #444444; -moz-border-radius: 5px;}  
</style>  
</head>  
<body>  
  <div id="panel"><div id="close" onclick="close();"></div></div>  
</body>  
</html>  

Was mache ich Falsch?

  1. Was mache ich Falsch?

    Welche debugausgaben hast du bisher gemacht?

    1. Welche debugausgaben hast du bisher gemacht?

      Also alles außer setTimeout funzt!

      1. setTimeout("close", 80);

        1. setTimeout("close", 80);

          Das ist Unsinn. Du meinst:

          window.setTimeout(close, 80);

          Trotzdem ist der Name schlecht gewählt, da er die window.close Methode überschreibt.

          Struppi.

  2. Hi,

    <html>
    <head>
    </head>
    <script text="type/javascript">

      
    Ein </head> ist zu viel.  
    text="type/javascript" heißt type="text/javascript"  
      
    
    > ~~~html
      
    
    > <!--  
    > var p = document.getElementById("lala");  
    > var left = 0;  
    > function close() {  
    >    left++;  
    >    if (p.style.left != "-60px") {  
    >        p.style.left = "-" + left + "px";  
    >    }  
    >    setTimeout("close();", 80);  
    > }  
    > //-->  
    > </script>  
    > 
    
    

    close() ist schon eine Methode des window Objekts. Bei mir funktioniert das nicht. Benenne ich sie um in close1() zB dann gehts.

    Gruß!

  3. Hi!

    <!--
    //-->

    Die Browser, die das nötig hatten, sind mittlerweile ausgestorben. Außerdem ist ein </head> zu viel.

    var p = document.getElementById("lala");

    Das Element mit der ID lala existiert zu keiner Zeit. Ansonsten existieren zu diesem Zeitpunkt auch keine anderen Elemente des Body, weil der erst später kommt. Wenn onload vom Body feuert, sind sie aber auf alle Fälle da.

    function close() {

    close() heißt bereits eine Funktion des window-Objekts. Und die wird (in meinen Versuchen) aufgerufen, nicht deine Version.

    Lo!

  4. Hallo,

    var p = document.getElementById("lala");
    var left = 0;
    function close() {
       left++;
       if (p.style.left != "-60px") {
           p.style.left = "-" + left + "px";
       }
       setTimeout("close();", 80);

    dem Timeout-Aufruf würde ich eine eigene function spendieren, und vielleicht noch p in der passenden function am Anfang definieren (lala?).

    Grüsse

    Cyx23