Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problemi nel chiamare una funzione

    So che il titolo è un po improvvisato, ma non sapevo cosa metterci, in quanto anche il problema è molto strano. In poche parole, ho un blocco di codice
    codice:
    function setAlbum(name){
        document.getElementById("photos").innerHTML = "";
        var a = 0;
        var album = albums[a];
        while (name != albums[a].getAttribute("name")) {
            a++;
            album = albums[a];
        }
        var photos = album.getElementsByTagName("photo");
        document.getElementById("photos").innerHTML = "";
        for (var a = 0; a < photos.length; a++) {
            var photo = document.createElement("img");
            photo.src = photos[a].childNodes[0].nodeValue;
            photo.alt = "photo";
            photo.style.opacity = "0.1";
            document.getElementById("photos").appendChild(photo);
    		elem = photo;
            setInterval("fade()", 50);
        }
    }
    
    var i = 0;
    var elem = null;
    function fade(){
        if (i < 1) {
            i += 0.1;
            alert(i);
            elem.style.opacity = i;
            setTimeout("fade()", 50);
    		alert("a");
        }
        else {
            elem.style.opacity = "1";
    		i = 0;
        }
    }
    Che quando viene eseguito, funziona come impostato, ma il "for" che chiama 3 volte la funzione "fade", la chiama senza aspettare che questa abbia finito di eseguirsi...
    Pensate che si possa fare in qualche modo?

    Grazie,

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Evidentemente ci mette piu' di 50 millisecondi ad eseguirsi....

    Ma se proprio sicuro che non volessi scrivere setTimeout al posto di setInterval ? magari con qualche controllino che verifichi il termine dell'operazione... (non ho approfondito il problema)

    Comunque fatto cosi' tu richiami fade() un'infinita' di volte in tempi ridottissimi ed in concorrenza con le volte precedenti che hai attivato la setInterval
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3

    Modifica al codice...

    Ho modificato il codice in modo da fare più o meno quello che hai detto tu (ed era anche quello che avevo in mente io, ma speravo in qualcun'altro che mi illuminasse su tecniche e trucchetti js strani di cui ancora sono ignorante ).

    Lo puoi trovare qui.

    L'unico problema è che ho un bug per cui mi carica solo una foto, e dovrebbe trovarsi dentro la funzione "createPhoto". Spero che tu mi possa illuminare :P

    Comunque sia, intanto grazie dell'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.