Fluffy: setTimeout() und setInterval in eigenen Objektmethoden

Beitrag lesen

Hier nochmal, wie es mit meinem Vorschlag richtig geht. Keine Ahnung, warum bei Dir sich nix bewegt hatte. So läuft es auf alle Fälle.

<html>
<head>
  <script language="JavaScript">
  <!--
  function TestObj(id1,x,y){

this.css = document.getElementById(id1);// Die CSS-atrribute des übergebenen Objekts werden zugänglich gemacht

//hier fehlt jetzt was, da es nicht gebraucht wird

this.xpos=x;
    this.ypos=y;
    eval('this.css.style.top="'+ this.ypos +'"');
    eval('this.css.style.left="'+ this.xpos +'"');

this.move = move;//Funktion zuweisen

function move(){
      this.xpos+=5;   // Der Code für die
      this.ypos+=5;   // Objektbewegung
      eval('this.css.style.top="'+ this.ypos +'"');
      eval('this.css.style.left="'+ this.xpos +'"');

var thisOb = this;

setTimeout(function(){ thisOb.move()},50);
    }
  }
  -->
  </script>
</head>

<body>
  <!-- Hier werden zwei <div> Bereiche in unterschiedlichen Farben angelegt und mit einer ID versehen -->
  <div id="test1" style="width:100px;height:100px;background:red;position:absolute;"></div>
  <div id="test2" style="width:100px;height:100px;background:blue;position:absolute;"></div>

<script type="text/javascript">
  <!--
    // Hier werden 2 Objectinstanzen angelelegt und an den jeweiligen Startpunkt gelegt
    obj1 = new TestObj('test1',100,100);
    obj2 = new TestObj('test2',200,200);
  // -->
  </script>

<a href="javascript:obj1.move();// Aufruf der move-Methode">Starte den roten Block</a>
  <br />
  <a href="javascript:obj2.move();// Aufruf der move-Methode">Starte den blauen Block</a>

</body>
</html>

Meines Wissens nach gibt's bei JavaScript doch sowieso keine richtige Datenkapslung, da private und protected bis jetzt nur reservierte Schlüsselworte sind und nicht verwendet werden. Berichtigt mich bitte, wenn ich hier Mist erzähle.

MfG

Fluffy