Benno Kieselstein: Bilderbuch zum Umblättern

Ich versuche seit einigen Tagen, Stefans Beispiel "Bilderbuch zum Umblättern" (tfcca.htm) abzuwandeln. Der aktuelle Inhalt soll zuerst (sichtbar!) abgebaut werden, bevor der neue Inhalt aufgebaut wird.

Als einzige wesentliche Änderung am Code habe ich eine zweite function namens "BildAbbauen" hinzugefügt. Die habe ich mit ein paar trivialen Änderungen aus "BildAufbauen" abgeleitet.

Der Algoritmus sieht jetzt ungefähr so aus:

function Blaettern()
{
aktuelleHoehe = maximaleHoehe;
BildAbbauen();
    // verkleinert den sichtbaren Ausschnitt
    // bis aktuelleHoehe <= minimaleHoehe
BildBereitstellen()
    // schreibt den neuen Inhalt in den Bereich
aktuelleHoehe = minimaleHoehe;
BildAufbauen();
    // vergrößert den sichtbaren Ausschnitt
    // bis aktuelleHoehe >= maximaleHoehe
}

Das Problem: "BildAbbauen" und "BildAufbauen" laufen jeweils perfekt. Aber wenn sie beide hintereinander aufgerufen werden, entsteht eine Endlosschleife. (Die ist relativ harmlos, mann kann sie durch Reload des Dokuments unterbrechen.)

Aber ich verstehe nicht, wie es dazu kommt. Weiß jemand Rat?

  1. Moin Benno,

    Das Problem: "BildAbbauen" und "BildAufbauen" laufen jeweils perfekt. Aber wenn sie beide hintereinander aufgerufen werden, entsteht eine Endlosschleife. (Die ist relativ harmlos, mann kann sie durch Reload des Dokuments unterbrechen.)

    Aber ich verstehe nicht, wie es dazu kommt. Weiß jemand Rat?

    Rat wird wohl frühestens jemand wissen, wenn Du den Code von BildAbbauem und BildAufbauen veröffentlichst oder eine URL angibst, unter der man sich das ganza ansehen kann...

    In dem von Dir geposteten Code kann der Fehler nicht liegen! Also: Bitte genauere Infos!!!

    Gruß
    Dirk

    1. Hallo Dirk,

      zunächst wollte mal sehen, ob jemand einen Fehler in meiner grundsätzlichen Herangehensweise entdeckt. Ich bin vermutlich völlig betriebsblind.

      Hier der Code für die beiden Routinen:

      function BildAbbauen()
      {
      if(aktuelleHoehe >= minimaleHoehe)
      {
      if(document.all) document.all.Bildbereich.style.clip="rect(0px 402px " + aktuelleHoehe + "px 0px)";
      else if(document.layers) document.layers[0].clip.right = aktuelleHoehe;
      aktuelleHoehe = aktuelleHoehe - Geschwindigkeit;
      window.setTimeout("BildAbbauen()",0);
      }
      else
      {
      if(document.all) document.all.Bildbereich.style.clip="rect(0px 402px " + minimaleHoehe + "px 0px)";
      else if(document.layers) document.layers[0].clip.right = minimaleHoehe;
      }
      }

      function BildAufbauen()
      {
      if(aktuelleHoehe <= maximaleHoehe)
      {
      if(document.all) document.all.Bildbereich.style.clip="rect(0px 402px " + aktuelleHoehe + "px 0px)";
      else if(document.layers) document.layers[0].clip.right = aktuelleHoehe;
      aktuelleHoehe = aktuelleHoehe + Geschwindigkeit;
      window.setTimeout("BildAufbauen()",0);
      }
      else
      {
      if(document.all) document.all.Bildbereich.style.clip="rect(0px 402px " + maximaleHoehe + "px 0px)";
      else if(document.layers) document.layers[0].clip.right = maximaleHoehe;
      }
      }

    2. Rat wird wohl frühestens jemand wissen, wenn Du den Code von BildAbbauem und BildAufbauen veröffentlichst oder eine URL angibst, unter der man sich das ganza ansehen kann...

      Done!
         http://www.beno.de/selfhtml