Bonjour, alors voilà mon problème, je ne vois pas les informations qui concernent mon produit dans le localStorage.
Voici le code :
var lesProduits = new Array();
$(
function()
{
$("#btnValider").click(
function()
{
commande1 = new Produit($("#txtRef1").val(),$("#txtTaille1").val(),$("#txtQuantite1").val(), 20);
lesProduits[lesProduits.lenght] = commande1;
localStorage.setItem("MesProduits",JSON.stringify(lesProduits));
}
)
}
);
function Produit(uneRef,uneTaille,uneQuantite,unPrix)
{
this.Ref = uneRef;
this.Taille = uneTaille;
this.Quantite = uneQuantite;
this.Prix = unPrix;
}
Si quelqu'un à une solution je suis preneur. Pour information "txtRef1" est l'id de mon select pour permettre à l'utilisateur de sélectionner un Produit parmis une liste.
Bonsoir,
tu as fait une faute ici :
lesProduits[lesProduits.lenght] = commande1;
//devrait etre
lesProduits[lesProduits.length] = commande1;
petite inversion du t et du h mais du coup, il devait faire lesProduits[undefined] = commande1.
Merci beaucoup, ça marche mais désormais je sèche pour savoir comment lier une réference à un prix.
C'est à dire que lorsque l'utilisateur choisi par exemple la seconde réference cela le lie à un prix qui est de 60€,
ou bien si il choisi la quatrième réference cela prendra automatiquement la valeur 100€.
J'ai envie de dire : Programmation fonctionnelle :).
// recupère les éléments du localStorage
var mesProduits = JSON.parse(localStorage.setItem("MesProduits"));
// variable représentant la référence choisie par l'utilisateur
var maReference = ...
// récupération de mon prix
var monPrix = mesProduits
// on récupère le Produit dans le tableau dont la référence correspond à la référence choisie par l'utilisateur
.find(function(produit) {
return produit.Ref === maReference;
})
// à partir d'ici, on a un Produit, la fonction map() va transformer l'objet Produit en un int prix
.map(function(produit) {
return produit.Prix;
});
Attention, si tu souhaites utiliser cette solution, je te conseille, soit d'ajouter les polyfills de Mozilla filter() et map(), soit tu intègres carrément la librairie sugarjs
Je suis néophyte en programmation et donc je ne comprend pas tout. (1ere année en bts info)
Donc je dois écrire cela après le premier code que j'ai posté je suppose ?
Par contre je ne vois pas ce que je dois écrire après maReference vu que je ne l'a connais pas en avance.
Pour finir comment je fais pour intégrer la librairie ? Je travaille avec Microsoft Expression Web 4.
En tout cas merci pour ton aide !
Je suis néophyte en programmation et donc je ne comprend pas tout. (1ere année en bts info)
La programmation fonctionnelle utilise le principe des fonctions. C'est une notion que tu as déjà utilisé dans le code que tu as fourni. Pour mon code, je vais le découper pour que tu comprennes mieux.
var monProduit = mesProduits.find(function(produit) {
return produit.Ref === maReference;
});
Reviens à faire ça :
var monProduit = undefined;
for(var i=0; i < mesProduits.length; i++) {
var p = mesProduits[i];
if(p.Ref === maReference) {
monProduit = p;
}
}
la méthode find() va faire une boucle et te propose une fonction de callback (ici : function(produit) { ...} ) pour te permettre de dire à ton programme comment trouver le bon élément.
Pour le map, comme je l'ai expliqué, je prends un objet A (ici un objet Produit) et je le transforme en un Object B (ici un Integer).
Est ce plus clair ou non ?
C'est à dire que lorsque l'utilisateur choisi par exemple la seconde réference
Par contre je ne vois pas ce que je dois écrire après maReference vu que je ne l'a connais pas en avance.
Si tu la connais, le code que je t'ai donné n'est à lancer qu'au moment où l'utilisateur a choisi sa référence.
Pour finir comment je fais pour intégrer la librairie ? Je travaille avec Microsoft Expression Web 4.
Il s'agit d'une librairie externe donc tu dois l'appeler avec <script src="chemin/sugarjs.min.js"></script>. Vu que c'est une librairie développée par une autre personne, je te conseille de la mettre dans js/vendors.