Creare funzione if else

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
Ora è funzionante, c'è ancora qualcosa: se apri la pag non appare la parola Carrello, appare dopo che si è aggiunto qualcosa.

Dovrebbe essere così: quando si apre la pag. deve apparire Carrello e non dev'essere cliccabile, poi quando il carrello è pieno deve apparire Vai al carrello e dev'essere cliccabile. Se si svuota il carrello deve ritornare come all'inizio.

http://www.libridelbenessere.altervista.org/
 
Per far apparire la parola "carrello" subito basta sostituire
Codice:
<a class="cord" href="#segnalibroOrdine" id="cordX"></a>
Con
Codice:
<a class="cord" href="#segnalibroOrdine" id="cordX">Carrello</a>

Se invece vuoi far sì che non sia cliccabile cambia il codice jquery così:
Codice:
$(document).ready(function(){
  AZZERA(); 
function controllanumero(totalequantita){
if(totalequantita>1){$("#cordX").html("<a href=\"#segnalibroOrdine\">Vai al carrello</a>");}
else{$("#cordX").html("Carrello");}
}
var numero_totale = 0; //setta questa variabile
$(".aggiungi").click(function(){
controllanumero(numero_totale);
});
});

E poi la parte in html così:
HTML:
<span class="cord" id="cordX">Carrello</span>
 
Ho messo così e funziona tutto, quando lo svuoto non ritorna la parola Carrello

HTML:
$(document).ready(function(){
  AZZERA(); 
function controllanumero(totalequantita){
if(totalequantita>1){$("#cordX").html("Carrello");}
else{$("#cordX").html("Vai al carrello");}
}
var numero_totale = 0; //setta questa variabile
$(".aggiungi").click(function(){
controllanumero(numero_totale);
});
});

…

<a class="cord" href="#segnalibroOrdine" id="cordX">Carrello</a>

Ci sarebbe un ultima cosa: quando appare la parola Carrello, non deve prendere l'hover
 
Ultima modifica:
Ho messo così e funziona tutto, quando lo svuoto non ritorna la parola Carrello
Dovrebbe? Se sì, nella funzione "Azzera" (o in quella che si occupa di svuotare il carrello) devi chiamare
Codice:
 controllanumero(0);

Ci sarebbe un ultima cosa: quando appare la parola Carrello, non deve prendere l'hover
Dovresti assegnare una classe diversa al link, specificando per quella l'azione da compiere all'hover
 
Così non va.

HTML:
<a class="cord" onclick="SVUOTA()">Vuota il carrello</a>

…

function SVUOTA(){
   $(".merce").each(function(){
      $(this).remove();    
   });
   controllanumero(0);
   AZZERA();
  }
 
Ultima modifica:
Succede perchè la funzione controllanumero viene caricata quando "document" è "ready" (quando il documento si è caricato completamente), mentre la funzione SVUOTA viene caricata immediatamente.
Inseriscila all'interno del blocco
$(document).ready();
(dopo controllanumero)
e dovrebbe funzionare :)
 
Non c'è $(document).ready();

HTML:
function SVUOTA(){
   $(".merce").each(function(){
      $(this).remove();
   });
   controllanumero(0);
   AZZERA();
  }
 
Intendevo dire di mettere quel codice che hai postato all'interno di $(document).ready():
Codice:
$(document).ready(function(){
  AZZERA(); 
function controllanumero(totalequantita){
if(totalequantita>1){$("#cordX").html("Carrello");}
else{$("#cordX").html("Vai al carrello");}
}
var numero_totale = 0; //setta questa variabile
$(".aggiungi").click(function(){
controllanumero(numero_totale);
});
function SVUOTA(){
   $(".merce").each(function(){
      $(this).remove();
   });
   controllanumero(0);
   AZZERA();
  }
});
 
Ora è dovuto al fatto che SVUOTA è definita dopo che viene caricato
Codice:
<div style="float: left; font-size: 0.75em; color: #999; padding-top: 2px; margin-top: 25px; margin-left: -500px; border-top: 1px solid #ccc;"><a class="cord" onclick="SVUOTA()">Vuota il carrello</a></div>


Quindi a questo punto porta fuori entrambe le funzioni:
Codice:
function controllanumero(totalequantita){
if(totalequantita>1){$("#cordX").html("Carrello");}
else{$("#cordX").html("Vai al carrello");}
}
function SVUOTA(){
   $(".merce").each(function(){
      $(this).remove();
   });
   controllanumero(0);
   AZZERA();
  }
$(document).ready(function(){
  AZZERA(); 
var numero_totale = 0; //setta questa variabile
$(".aggiungi").click(function(){
controllanumero(numero_totale);
});
});
 
Bene, ora funziona, ma c'è sempre il famoso problema che quando vuoto il carrello, non riappare la parola Carrello

HTML:
<a class="cord" href="#segnalibroOrdine" id="cordX">Carrello</a>
…

function controllanumero(totalequantita){
if(totalequantita>1){$("#cordX").html("Carrello");}
else{$("#cordX").html("Vai al carrello");}
}
function SVUOTA(){
   $(".merce").each(function(){
      $(this).remove();
   });
   controllanumero(0);
   AZZERA();
  }
$(document).ready(function(){
  AZZERA(); 
var numero_totale = 0; //setta questa variabile
$(".aggiungi").click(function(){
controllanumero(numero_totale);
});
});
 
Sostituisci
Codice:
   controllanumero(0);
Con
Codice:
   controllanumero(2);
All'interno di SVUOTA, oppure cambia così controllanumero:
Codice:
function controllanumero(totalequantita){
if(totalequantita<1){$("#cordX").html("Carrello");} //se la quantità totale è minore di 1, stampa "Carrello"
else{$("#cordX").html("Vai al carrello");} //altrimenti, stampa "Vai al carrello"
}
 
:fonzie: La stessa cosa devo applicarla anche al pulsante Elimina che richiama questa funzione

Codice:
 function ELIMINA(id){
   var quantita = parseInt($("#prodotto"+id+" .quantity").val());
   var valore = $("#prodotto"+id+" .subTotaleX").val();
   var valore = valore.toString(); 
   valore = valore.replace(",", ".");
   valore = parseFloat(valore);
   $("#prodotto"+id).remove();
   var totalequantita = parseInt($("#areacalcolo .totquantita").val());
   var totaleacquisto = $("#areacalcolo .totspesa").val();
   totaleacquisto = totaleacquisto.toString(); 
   totaleacquisto = totaleacquisto.replace(",", ".");
   totaleacquisto = parseFloat(totaleacquisto);
   totalequantita-=quantita;
   totaleacquisto-=valore;
   $("#areacalcolo .totquantita").val(totalequantita);
   $("#areacalcolo .totspesa").val(totaleacquisto);
   if(totalequantita==0){
    AZZERA();
   }else{
    $("#infoProdotto"+id+" .aggiunto").hide();
    $("#infoProdotto"+id+" .aggiungi").show();
    CARRELLO();
   }
  }
 
Per andar sul sicuro aggiungi controllanumero subito dopo il nome della funzione:
Codice:
 function ELIMINA(id){controllanumero(numero);
   var quantita = parseInt($("#prodotto"+id+" .quantity").val());
...
:)
 
Funziona a metà, intendo: se inserisco nel carrello un articolo e lo vuoto col pulsante Elimina, riappare Carrello, se invece inserisco più articoli e li elimino una alla volta rimane scritto Vai al carrello, fino a quando non si arriva ad un solo articolo nel carrello. eliminando quest'ultimo riappare Carrello. Fai delle prove per capire meglio.

HTML:
controllanumero(2);

http://libridelbenessere.altervista.org/
 

Discussioni simili