Codice all'interno dell'Else If non funge..metodo animate()

di il
6 risposte

Codice all'interno dell'Else If non funge..metodo animate()

Non capisco perchè al secondo click dell'elemente non posso attuare il codice all'interno dell'else if del seguente codice (continuo ad eseguire il codice dell'istruzione if)
$(document).ready(function(){
	$(document).on("click", "#freccia_destra", function(){
     if($("#centrale_index").css({"background-image": "url(Immagini/smile.jpg)"}))
	{

		var foto = $("#centrale_index");
      foto.animate({left: "20px", opacity: "0"}, "3000", function(){
	     foto.css({"background-image" : "url(Immagini/scacchi.jpg)"});
	     foto.animate({left: "0px", opacity:"1"},"3000")
		 foto.stop();  });
		
		 
	}
	
	else if ($("#centrale_index").css({"background-image": "url(Immagini/scacchi.jpg)"}))
	{
		
		var foto = $("#centrale_index");
		foto.animate({left: "20px" , opacity: "0"}, "3000", function(){
	      foto.css({"background-image" : "url(Immagini/barche.jpg)"});
	      foto.animate({left: "0px", opacity:"1"},"3000");      });
		
	}
});	 
});
	      
il metodo stop() nel primo if mi serve perchè non voglio che esegue anche i successivi animate inclusi nell'else if

6 Risposte

  • Re: Codice all'interno dell'Else If non funge..metodo animate()

    Per il semplice fatto che ciò che hai scritto nella condizione in realtà non fa assolutamente ciò che pensi.
    Se ho ben interpretato, tu vuoi verificare se l'elemento su cui hai cliccato abbia come immagine di sfondo smile.jpg per eseguire l'azione A oppure scacchi.jpg per eseguire l'azione B.
    Tuttavia, con
    $("#centrale_index").css({"background-image": "url(Immagini/smile.jpg)"})
    tu non stai verificando il css corrente, ma ne stai impostando uno nuovo.
    Per capire quale sia l'immagine di sfondo, devi effettuare la chiamata a
    $(...).css("propertyName");
    che ti restituisce il valore di corrente di propertyName.
    Nel tuo caso specifico, avresti:
    if($("#centrale_index").css("background-image") == "url(Immagini/smile.jpg)")
        AZIONE A
    else if ($("#centrale_index").css("background-image") == "url(Immagini/scacchi.jpg)")
        AZIONE B
  • Re: Codice all'interno dell'Else If non funge..metodo animate()

    Così facendo non parte neanche la prima istruzione if
    $(document).ready(function(){
    	$(document).on("click", "#freccia_destra", function(){
         if($("#centrale_index").css("background-image") == "url(Immagini/smile.jpg)")
    	 {
               var foto = $("#centrale_index");
                foto.animate({left: "20px", opacity: "0"}, "3000", function(){
    	    foto.css({"background-image" : "url(Immagini/scacchi.jpg)"});
    	    foto.animate({left: "0px", opacity:"1"},"3000")
    		 foto.stop();  });
    		}
    	
    	else if ($("#centrale_index").css("background-image") == "url(Immagini/scacchi.jpg)")
    	{
                  var foto = $("#centrale_index");
    		foto.animate({left: "20px" , opacity: "0"}, "3000", function(){
    	      foto.css({"background-image" : "url(Immagini/barche.jpg)"});
    	      foto.animate({left: "0px", opacity:"1"},"3000");      });
                  }
    });	 
    });
  • Re: Codice all'interno dell'Else If non funge..metodo animate()

    Dato che non tocco il JavaScript da un po'... Metti prima dell'if un alert che ti stampa il valore di $(...).css("background-image"), forse ritorna soltanto "immagini/blabla.jpg" senza la parte "url(...)".
  • Re: Codice all'interno dell'Else If non funge..metodo animate()

    tuixte ha scritto:


    Dato che non tocco il JavaScript da un po'... Metti prima dell'if un alert che ti stampa il valore di $(...).css("background-image"), forse ritorna soltanto "immagini/blabla.jpg" senza la parte "url(...)".

    Mi mancava di dirti che sto creando il codice in locale, senza neanche usare un simulatore di server come EasyPhp (non so come usarli )

    però l'alert mi dice: url("file:///C:/Users/RD94/Desktop/Prova%20Centrale/Immagini/smile.jpg")

    nella stessa cartella Prova Centrale ho tutti i file dove sto lavorando
  • Re: Codice all'interno dell'Else If non funge..metodo animate()

    Allora credo dovrai utilizzare tutta quella stringa per il confronto.. Magari puoi impostare tutto il "file://...../Immagini" in una stringa path a cui poi vai ad aggiungere di volta in volta il nome dell'immagine che ti serve.
  • Re: Codice all'interno dell'Else If non funge..metodo animate()

    Grazie, ma ho scritto :
    if($("#centrale_index").css("background-image") == "url('file:///C:/Users/RD94/Desktop/Prova%20Centrale/Immagini/smile.jpg')")
    che non funge lo stesso


    ho anche provato con il metodo .is
    if($("#centrale_index").is($("#centrale_index").css("background-image", "url(Immagini/smile.jpg)"))) 
    che fa funzionare solo la prima stringa di codice all'interno dell'if anche ai succissivi click. dove ho già impostato il nuovo background-image in scacchi.jpg
Devi accedere o registrarti per scrivere nel forum
6 risposte