Visualizzazione dei risultati da 1 a 3 su 3

Discussione: problema setinterval

  1. #1

    problema setinterval

    Salve ho un problema con questo codice:

    codice:
    var images=new Array("images/document/index/background1.jpg","images/document/index/background2.jpg","images/document/index/background3.jpg","images/document/index/background4.jpg");
    
    var image=new Array();
    for(var i=0; i<images.length; i++){
    	image[i]=new Image();
    	image[i].src=images[i];
    }
    
    	
    $(document).ready(function() {
    	
    var cntimg=0;
    function bckstart(cntimg){
    	alert(cntimg);
    		$("img#background1").attr("src",image[cntimg].src);
    		$("div.background1").fadeIn(2000, function(){
    			$("img#background").attr("src",image[cntimg].src);
    			$(this).css("display","none");
    			cntimg = (cntimg < images.length) ? cntimg + 1 : 0;
    			alert(cntimg);
    		});
    }
    setInterval(bckstart(cntimg), 5000);
    in poche parole carico in preload le immagini e moi con un setInterval le cambio ogni tot secondi.
    Il problema e che fa partire la prima volta la funzione e poi non va + non chiama più la funzione.
    Ho visto tramite gli alert che vedete nel codice se vi era un errore che interrompeva la sequenza ma non è così, ma allora perche il setInterval non funge?

  2. #2

    Re: problema setinterval

    Originariamente inviato da techno
    Salve ho un problema con questo codice:

    codice:
    var images=new Array("images/document/index/background1.jpg","images/document/index/background2.jpg","images/document/index/background3.jpg","images/document/index/background4.jpg");
    
    var image=new Array();
    for(var i=0; i<images.length; i++){
    	image[i]=new Image();
    	image[i].src=images[i];
    }
    
    	
    $(document).ready(function() {
    	
    var cntimg=0;
    function bckstart(cntimg){
    	alert(cntimg);
    		$("img#background1").attr("src",image[cntimg].src);
    		$("div.background1").fadeIn(2000, function(){
    			$("img#background").attr("src",image[cntimg].src);
    			$(this).css("display","none");
    			cntimg = (cntimg < images.length) ? cntimg + 1 : 0;
    			alert(cntimg);
    		});
    }
    setInterval(bckstart(cntimg), 5000);
    in poche parole carico in preload le immagini e moi con un setInterval le cambio ogni tot secondi.
    Il problema e che fa partire la prima volta la funzione e poi non va + non chiama più la funzione.
    Ho visto tramite gli alert che vedete nel codice se vi era un errore che interrompeva la sequenza ma non è così, ma allora perche il setInterval non funge?
    Sbagli o manca una chiusura "}" della function ready,
    errore nel copia incolla? o dimenticaza?

    ciao

  3. #3
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Non ho controllato il codice, ma te l'ho corretto e l'ho reimpostato per renderlo più efficiente (ho eliminato le closures):

    codice:
    var aImgURIs = ["aImgURIs/document/index/background1.jpg","aImgURIs/document/index/background2.jpg","aImgURIs/document/index/background3.jpg","aImgURIs/document/index/background4.jpg"];
    var cntimg = 0;
    var aImages = [];
    
    for (var nIdx = 0; nIdx < aImgURIs.length; nIdx++) {
    	aImages.push(new Image());
    	aImages[nIdx].src = aImgURIs[nIdx];
    }
    
    function fadeImg () {
    	$("img#background").attr("src", aImages[cntimg].src);
    	$(this).css("display", "none");
    	cntimg = (cntimg < aImgURIs.length) ? cntimg + 1 : 0;
    	alert(cntimg);
    }
    
    function bckstart(){
    	$("img#background1").attr("src", aImages[cntimg].src);
    	$("div.background1").fadeIn(2000, fadeImg);
    }
    	
    $(document).ready(function() { setInterval(bckstart, 5000); }
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.