tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
2112
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    FipsTheThief FipsTheThief ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Leipzig
    Beiträge
    589
    Also ich probiere eben ein wenig in javaScript rum , und komme nicht so recht dahinter wo der Unterschied zwischen setTimeout und setInterval ist. Beide Funktionen sind ja ähnlich .
    setInterval ruft halt eine Funktion immer nach einer gewissen Zeit auf und setTimeout macht das gleiche eigentlich dachte ich.

    Nur habe ich nun 2 Beispiele hier die mich verwundern. Dieses erste läuft nur mit setTimeout richtig.
    Entschuldigt hier den PHP , HTML JavasScript mix.

    HTML-Code:
    <html>
        <head>
            <script type="text/javascript">
                var Images = new Array();
                var actuallyImage = 0;
            
                function switchImage(){
                    document.getElementById("bild").src = Images[actuallyImage].src;
                    actuallyImage++;
                    
                    // ist das letzte Bild bereits erreicht 
                    // dann beginnen wir von vorne
                    if(actuallyImage >= Images.length){
                        actuallyImage = 0;
                    }
                    
                    // 5 sek warten bis zum nächsten Bild
                    setTimeout("switchImage()",10000);                
                }
            
                function loadImages(file){
                    // bilder laden und die Obkelte alle in ein Array speichern
                    imgNumber = Images.length;    
                    Images[imgNumber] = new Image();
                    Images[imgNumber].src = "Images/"+file;
                }
            </script>
        </head>
        <body onload="switchImage()">
            <script type="text/javascript">
            <?php
                /**
                  PHP Script um die Bilder vorzuladen 
                **/
                
                // erlaubte Bildtypen festlegen
                $trustedImages = Array("image/jpg","image/jpeg","image/gif","image/png");
            
                // Bilder einladen nun einmal
                // lustiger mix PHP und HTML und JS in einer Datei ;) 
                $imageDir = "Images";
                
                // verzeichniss öffnen 
                $fileStream = opendir($imageDir);
                
                //verzeichniss durchlaufen
                while($file = readdir($fileStream) ){
                
                    // nur datein einlesen 
                    if($file != "." && $file != ".." && is_file("Images/".$file)){
                    
                        // wir nehmen nur ausgewählte Datein des Types jpg jpeg  gif oder png
                        $mimeType = getimagesize("Images/".$file);
                        if(in_array($mimeType['mime'],$trustedImages)){
                            // nun laden wir die Bilder im JavaScript vor
                            echo "loadImages('".$file."');";
                        }
                    }
                }
            ?>
            </script>
            <div align="center">
                <!-- Grundfäche //-->
                <div  style="height:400px;width:400px;">
                    <img src="bild.jpg" id="bild" alt="lade Bilder">
                </div>            
            
            </div>
        </body>
    </html>
    Das zweite ist eine kleine Animation gewesen mit 3 Fischen welche nur mit setInterval richtig läuft aber nicht mit setTimeout.

    HTML-Code:
    <html>
        <head>
            <style type="text/css">
                #Aquarium{
                    position:absolute;
                    width:450px;
                    height:150px;
                    background-color:#0000FF;
                }
            </style>
    
            <script type="text/javaScript">
                
                var id;
                var richtung;
                
                function swim(){
                    this.Value = parseInt(document.getElementById(this.id).style.left) ;
                    if(this.Value < 400 && this.richtung== 'left'){
                        this.Value += 1;
                        this.richtung = "left";
                    }else{
                        this.Value -= 1;
                        this.richtung = "right";
                    }
                    
                    if(this.Value < 0){
                        this.richtung = 'left';
                    }
                    document.getElementById(this.id).style.left = this.Value;
                }
                
                function fish(id){
                    this.id = id;
                    this.richtung = 'left';
                    this.swim = swim;
                }
            </script>
        </head>
        <body>
            <!-- Auqium festlegen //--->
            <div id="Aquarium">
            
                <div id="fisch1" style="position:absolute;left:200px;bottom:15px;">
                    <img src="fisch.gif" alt="fisch">
                </div>
                <div id="fisch2" style="position:absolute;left:300px;bottom:20px;">
                    <img src="fisch2.gif" alt="fisch">
                </div>
                <div id="fisch3" style="position:absolute;left:10px;bottom:30px;">
                    <img src="fisch3.gif" alt="fisch">
                </div>
            </div>
            <div style="position:relative">
                <h1>AQUARIUM DES TODES </h1>
            </div>
            <script type="text/javascript">
                var Fish  = new fish("fisch1");
                var Fish2 = new fish("fisch2");
                var Fish3 = new fish("fisch3");
                
                // setTimeout ging hier nun nicht
                setInterval('Fish.swim()',30);
                setInterval('Fish2.swim()',35);
                setInterval('Fish3.swim()',40);
            
            </script>
        </body>
    </html>
    Mhm warum ist das so ?
     

  2. #2
    D@nger Tutorials.de Gastzugang
    Hallo, also settimeout ruft die Funktion nur einmal auf und setinterval in einem bestimmten Abstand immer wieder.
     

  3. #3
    FipsTheThief FipsTheThief ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Leipzig
    Beiträge
    589
    Zitat Zitat von D@nger
    Hallo, also settimeout ruft die Funktion nur einmal auf und setinterval in einem bestimmten Abstand immer wieder.
    Achso also wäre es ratsam nur innerhalb der Funktion setTimeout zu verwenden und nicht setInterval da dieses wohl zu einen Überlauf führt sonst. Und ausserhalb der Funktionen nur setInterval.
    Das leuchtet mir ein Danke Dir dafür.
     

Ähnliche Themen

  1. AIR, Javascript, setTimeout/setInterval
    Von Jean-Luc-Picard im Forum Adobe Flex & AIR
    Antworten: 0
    Letzter Beitrag: 30.01.09, 16:31
  2. setInterval -> aushebeln
    Von Pablo_de_la_Cruz im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 17.01.08, 15:49
  3. setInterval
    Von versuch13 im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 21.02.07, 22:02
  4. setInterval, setTimeout / XHTML probleme
    Von Ann Drew im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 06.03.05, 05:59
  5. Ausgabe eines Countdown mit setInterval() oder setTimeout()
    Von hhjjppww im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 22.08.04, 11:17