Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 21

Thema: Welches Ajax + Javascript Problem: HTML/CSS Element langsam vergrößern/ verkleinern

  1. #1

    Welches Ajax + Javascript Problem: HTML/CSS Element langsam vergrößern/ verkleinern

    Code:
    <script language="javascript">
    <!--
    function resizedown(){
     for (var i = 512; i >= 320; i--){
      document.getElementById("header").style.height=i+'px';
     }
    }
    -->
    </script>
    Der Code steht im <head>.

    Ich habe ein <div> das ich durch den Code verkleinern möchte wenn ich mit dem Mauszeiger aus dem <div> fahre. Bis jetzt klappt es nur so: Es ist sofort auf der Endgröße. Ich möchte aber das es schrittweiße geschieht. Wie müsste der Code aussehen? Ein document.WindowDealy() (so oder ähnlich hieß die Funktion) hilft mir da ja nicht sonderlich weiter. :-(

    Desweiteren: Ich habe gesehen das Dojo Ajax von IBM und Google gesponsort werden - ist dieses Framework brauchbar oder sollte ich mir eher Prototype (von Yahoo?) anschauen. Welches empfiehlt ihr?

    Bis dann! ;-)

  2. #2
    für mich fehlt da ein irgendwie gearteter wait befehl oder so.
    ich hab von js keine ahnung, aber da das fenster ja stetig verkleinert werden soll, muss da auf jedenfall sowas wie n wait rein, sonst wird das script bis zur endstufe druchlaufen und dann einmal ausgegeben.

  3. #3
    Dein Code enthält Fehler. Das language-Attribut ist missbilligt. Pflicht ist im script-Element nur das type-Attribut mit dem Wert „text/javascript“.
    Und ja, das kann Auswirkungen haben!

    Ansonnsten gebe ich dir einfach mal den Verweis zu setInterval().

  4. #4
    Direktlösung:
    HTML-Code:
    <script type="text/javascript">
    var resizeinterval;
    
    function startresize()
    {
    resizeinterval = window.setInterval("resizedown();",10);
    }
    
    function resizedown()
    {
        var tmp = document.getElementById("header").style.height;
        tmp = parseInt(tmp.substr(0,tmp.length-2)) - 1;
        document.getElementById("header").style.height = tmp + "px";
        if(tmp > 500)
          clearInterval(resizeinterval);
    }
    
    </script>

    Geändert von Lucleonhart (15.03.2007 um 12:12 Uhr)

  5. #5
    Zitat Zitat von Freierfall Beitrag anzeigen
    [...]
    Hey, Du hast doch etwa nicht meinen Text unter dem Code nicht gelesen oder?

    Zitat Zitat von mitaki Beitrag anzeigen
    [...]
    Auf Vaildativität (sofern das Wort so valide ist ) habe ich nicht geachtet, ich wollte nur erstmal zu einen Ergebnis kommen.
    Danke für den Link! ;-)

    Zitat Zitat von Lucleonhart Beitrag anzeigen
    [...]
    Danke für den Code. :-)
    Was mich allerdings wundert: man benötigt doch eigentlich bei der CSS Angabe height auch den Anhang px... Ob das Skript dann läuft? Egal, das werde ich erstmal ausprobieren müssen. ;-)

    Geändert von Maisaffe (13.03.2007 um 18:20 Uhr)

  6. #6
    Zitat Zitat
    Was mich allerdings wundert: man benötigt doch eigentlich bei der CSS Angabe height auch den Anhang px... Ob das Skript dann läuft? Egal, das werde ich erstmal ausprobieren müssen. ;-)
    Ja, Einheiten wie px sind notwendig. Nur bei 0 sind sie überflüssig, weil es ja keine Rolle spielt ob es sich um 0 Pixel oder 0 Blechdosen handelt.

    Das px wirds du wohl noch ergänzen müssen. Einerseits weil die Browser sonst eventuell gar nichts machen, andererseits weil es einfach sauberer Code ist.

  7. #7
    Zitat Zitat von mitaki Beitrag anzeigen
    Ja, Einheiten wie px sind notwendig. Nur bei 0 sind sie überflüssig, weil es ja keine Rolle spielt ob es sich um 0 Pixel oder 0 Blechdosen handelt.

    Das px wirds du wohl noch ergänzen müssen. Einerseits weil die Browser sonst eventuell gar nichts machen, andererseits weil es einfach sauberer Code ist.
    Ja - ist mir bewusst.

    Es ging mir um das JS von Luc - aber das hat scheinbar schon die Funktion dafür eingebaut[FONT=monospace]:[/FONT]parseInt(tmp.substr(0,tmp.length-2)) - 1;
    zum auslesen. px müsste ich bei der "Ausgabe" aber wieder anhängen wie es ausschaut. Sollte kein Problem sein, allerdings noch ungetestet. Sorry Luc.

    Welches Ajax empfiehlst Du?

  8. #8
    Zitat Zitat
    Es ging mir um das JS von Luc - aber das hat scheinbar schon die Funktion dafür eingebaut
    Dann hast du es andersherum gemeint als ich^^ Ja, parseInt entfernt bei Zahlen Zeichenketten, wenn diese am Ende stehen (d.h 123abc wird zu 123).

    Zitat Zitat
    Welches Ajax empfiehlst Du?
    AJAX selbst ist ja nur ein Objekt (bzw. je nach IE Version ein ActiveX-Element), welches du innerhalb von JavaScript nutzen kannst. Das müsste an sich leicht selbst machbar sein (was dann auch funktioniert). Man sollte halt wie immer bei JavaScript darauf achten, dass man die Informationen auch mit deaktiviertem JavaScript erreichen kann (wie hier im Forum z.B.).
    Mit den Frameworks habe ich mich noch nicht beschäftigt. Aber diese sind eigentlich nichts anderes als die Basis AJAX- bzw. XMLHttpRequest-Funktionen um verschiedene Funktionen erweitert, die man bei Seiten mit AJAX eben so benötigt.

  9. #9
    Zitat Zitat von mitaki Beitrag anzeigen
    Dann hast du es andersherum gemeint als ich^^ Ja, parseInt entfernt bei Zahlen Zeichenketten, wenn diese am Ende stehen (d.h 123abc wird zu 123).
    O________O WATT? ^^ Echt? Ohaohaoha.. und ich hangel mich seit jahrhunderten mit meiner
    Code:
    tmp.substr(0,tmp.length-2)
    letzten beiden zeichen abschneiden funktion rum....
    Hab das px noch angehängt.

  10. #10
    Zitat Zitat
    Hey, Du hast doch etwa nicht meinen Text unter dem Code nicht gelesen oder?
    Doch, aber die funktion sagte mir nichts, da ich wie gesagt, nicht den leisesten schimmer von JS habe.

    aber das hier
    Code:
    resizeinterval = window.setTimeout("resizedown();",10);
    aus lucs code ist das was ich vermisst habe, glaub ich.
    ne zeitabstufung oder so.

  11. #11
    Das Script verkleinert die <div> nur einmal und nicht fortwährend... Das wird doch wohl nicht an XHTML1.0 Strict liegen (welches laut meinen W3C Freund valide ist) oder? :/

  12. #12
    Nein, XHTML hat nur auf erzeugende Funktionen Einfluss [z.B. kein document.write(), weil man Inhalt übers DOM erzeugen soll].

    Ich denke, es liegt daran, dass Luc setTimeout() statt setInterval() verwendet hat.

    Wenn ich aber davon abgesehen einmal Fragen darf: Wieso möchtest du eine schrittweise Vergrößerung bzw. Verkleinerung? Hier im Forum gibts das ja auch, aber es erweckt für mich eher einen lahmen Eindruck^^

  13. #13
    Zitat Zitat von mitaki Beitrag anzeigen
    Nein, XHTML hat nur auf erzeugende Funktionen Einfluss [z.B. kein document.write(), weil man Inhalt übers DOM erzeugen soll].

    Ich denke, es liegt daran, dass Luc setTimeout() statt setInterval() verwendet hat.

    Wenn ich aber davon abgesehen einmal Fragen darf: Wieso möchtest du eine schrittweise Vergrößerung bzw. Verkleinerung? Hier im Forum gibts das ja auch, aber es erweckt für mich eher einen lahmen Eindruck^^
    Stimmt, daran könnte es liegen.

    Warum ich das will? Hab das mal bei einer Preview Seite eines Portals gesehen (leider ist das Portal jetzt Geschichte...) und fand das ganze recht interessant. Einen tieferen Nutzen hat das ganze nicht. Auf der Portalseite wurden dadurch Benutzerinformationen ein und ausgeblendet - das war es auch schon.

  14. #14
    Zitat Zitat von mitaki Beitrag anzeigen
    Ich denke, es liegt daran, dass Luc setTimeout() statt setInterval() verwendet hat.
    Jau, ein Fehler... behoben.

  15. #15
    Ich glaube aber, du musst noch einen zusätzlichen Befehlsblock einbauen. Wie man im Beispiel sieht, geht setInterval() ja immer weiter und hört nur bei clearInterval() auf.

  16. #16
    O_O Hab ich echt nicht eingebaut.. ?! Meine güte, ich bin echt voll auf Fehlermeldungen angewisen um meine eigene Miste zu sehen..
    Oder auf Mitakis.. ^^

    Updated! ^^

  17. #17
    Ach stimmt, wollte ich auch erwähnen.
    Nunja, mal schauen ob der Code rennt. ;-)

    Edit: Ja, er rennt. ;-) Dankö!

    Allerdings verstehe ich das nicht:
    resizeinterval = window.setInterval("resizedown();",1);
    das Ding verkleinert sich lahm - Pixel habe ich schon auf 10px gestellt. :/
    Schnell genug, aber es geht mir um das Prinzip. ;-)

    Geändert von Maisaffe (15.03.2007 um 18:53 Uhr)

  18. #18
    Hab auch schon bemerkt das einstellungen zwischen 1 und 30 millisekunden keine veränderung bringen.
    Wahrscheinlich (ich weiß es net) kommen die browser nicht schneller hinterher ^^

  19. #19
    Zitat Zitat
    Wahrscheinlich (ich weiß es net) kommen die browser nicht schneller hinterher ^^
    Wahrscheinlich erkennt ihr den Unterschied gar nicht^^

    Nebenbei: der zweite Parameter von setInterval() bestimmt ja, wie lange es dauert, bevor die Funktion erneut aufgerufen wird. Entsprechend müsste das ganze ja länger dauern, wenn man 30 statt einer Millisekunde angibt.

  20. #20
    Ok, sagen wir es anders:
    Wert = 100 -> Langsam
    Wert = 50 -> recht flott
    Wert = 1 -> gleiche Geschwindigkeit.

    Das sieht man schon.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •