Sven Rautenberg: layer bzw <div> kontrolle

Beitrag lesen

hi

hast du vielleihct auch noch eine idee wie man das setInterval() nicht automtaisch starten lassen könnte sondern mit einem onclick=""?

Ich würde setTimeout nehmen und das in der Funktion ggf. immer wieder aufrufen, um den nächsten Funktionsaufruf zu starten.

Also so:

function test()
{
  if(confirm("Weitermachen?")
  {
    setTimeout("test()",1000);
  }
}

Wenn confirm true ist (weil "OK" geklickt wurde), wird setTimeout aufgerufen, welches nach einer Sekunde erneut nachfragt. Könnte nervig werden, also Vorsicht ;).

Gestartet wird das mit dem simplen Aufruf der Funktion test() beispielsweise im onclick.

Animation fragt natürlich nicht nach, sondern ruft den nächsten Schritt dann auf, solange die Endposition noch nicht erreicht ist.

Du brauchst also zwei Variablen: Eine kennt die aktuelle Breite, die andere die gewünschte Endbreite. Und außerdem brauchst du noch einen Wert, um den je Schritt die Breite geändert wird.

Am Ende fragst du simpel ab:
if (aktuellebreite < gewuenschtebreite)
{
  setTimeout("breitenfunktion()",50);
}

Vorsicht: 1. funktioniert das natürlich nur, wenn deine Breite zuerst kleiner ist als die gewünschte Breite. Die Bedingung mußt du umkehren, wenn du den Layer schmaler machen willst.

2. Wenn du irgendwo einen konstanten Wert zum Addieren definierst, dann ist es sehr wahrscheinlich, daß du die gewünschte Breite nicht genau "triffst" - deshalb solltest du prüfen, ob die gewünschte Breite überschritten ist (eben von der einen oder anderen Seite her), die letzte Breitendefinition dann nicht mit dem errechneten, sondern mit dem gewünschten Breitenwert ausführen und die Animationsfunktion nicht weiter mit setTimeout aufrufen. Ganz einfach eigentlich. ;)

hab versucht das in eine function resize() umzuwandeln nur erkennt er dann die variable i, nicht mehr. und zwar sucht er nach ihr gleich in zeile 1/1.

Eine gesonderte Funktion resize zu haben, die nur den Layer auf eine gewünschte Breite setzt, ist eine gute Idee. Nur halte da die Animation raus - das wird IMHO einfacher.

hast du da vielleicht auch noch eine zündene idee?

Lesen, probieren, testen... lernen! :)

- Sven Rautenberg