Bonjour à tous et à toutes,
Voici mon problème :
Grâce à du PHP et du Jquery, j'ai récupéré les valeurs de checkboxs d'un formulaire et je les ai mise dans un tableau.
Le but ? C'est de créer une interface permettant de gérer les attributs de dossiers tel qu'on le retrouve sur Fillezila par exemple.
Donc grâce à mon code, je parviens bien à récupérer les valeurs correctement, pas de soucis, par contre un truc tout bête que je ne parviens pas à faire : transformer mon tableau de chaînes de caractères en un int !
Car par la suite j'aimerai calculer les valeurs de chaque tableau et les concaténer (sans les additionner !) avec la valeur des deux tableaux suivants, et avec une chaîne de caractère bah ça marche moins bien....
Voici mon code :
<script>
$(function(){
$('#lucie_valider_attributs').click(function(){
// Ce tableau javascript va stocker les valeurs des checkbox
var checkbox_val_proprio = [];
var checkbox_val_groupe = [];
var checkbox_val_public = [];
// Parcours de toutes les checkbox checkées avec les différentes classes
$("#checkboxLire_proprio:checked, #checkboxEcrire_proprio:checked, #checkboxExecuter_proprio:checked").each(function(){
checkbox_val_proprio.push($(this).val());
});
$("#checkboxLire_groupe:checked, #checkboxEcrire_groupe:checked, #checkboxExecuter_groupe:checked").each(function(){
checkbox_val_groupe.push($(this).val());
});
$("#checkboxLire_public:checked, #checkboxEcrire_public:checked, #checkboxExecuter_public:checked").each(function(){
checkbox_val_public.push($(this).val());
});
// Vérification des valeurs du tableau dans la console
console.log(checkbox_val_proprio);
console.log(checkbox_val_groupe);
console.log(checkbox_val_public);
function trace(){
var compteur = 0; // le compteur
var tab = checkbox_val_proprio; // le tableau
// la boucle
for (var i = compteur; i<tab.length; i++) {
compteur += parseFloat(tab[i]); // incr�mente le compteur
trace(parseFloat(tab[i])); // affiche la valeur de l'�l�ment "i" du tableau
}
};
trace(compteur);
$("#lucie_valeur_num").html("Valeur numérique : "+checkbox_val_proprio+checkbox_val_groupe+checkbox_val_public);
});
});
</script>
Voici l'erreur :
"Uncaught ReferenceError: compteur is not defined"
En fait j'ai trouvé carrément plus simple... Pourquoi se compliquer la vie sérieux... N'importe quoi...
Regardez ça :
<script>
$(function(){
$('#lucie_valider_attributs').click(function(){
// Ce tableau javascript va stocker les valeurs des checkbox
var checkbox_val_proprio = [];
var checkbox_val_groupe = [];
var checkbox_val_public = [];
// Parcours de toutes les checkbox checkées avec les différentes classes
$("#checkboxLire_proprio:checked, #checkboxEcrire_proprio:checked, #checkboxExecuter_proprio:checked").each(function(){
checkbox_val_proprio.push(parseInt($(this).val()));
});
$("#checkboxLire_groupe:checked, #checkboxEcrire_groupe:checked, #checkboxExecuter_groupe:checked").each(function(){
checkbox_val_groupe.push(parseInt($(this).val()));
});
$("#checkboxLire_public:checked, #checkboxEcrire_public:checked, #checkboxExecuter_public:checked").each(function(){
checkbox_val_public.push(parseInt($(this).val()));
});
// Vérification des valeurs du tableau dans la console
console.log(checkbox_val_proprio);
console.log(checkbox_val_groupe);
console.log(checkbox_val_public);
$("#lucie_valeur_num").html("Valeur numérique : "+checkbox_val_proprio+checkbox_val_groupe+checkbox_val_public);
});
});
</script>
Autant préciser directement dans la function .push qu'il faut mettre les chaîne de caractères en nombre... Soit :
.push(parseInt(valeur.val()))
Bon voilà sujet résolu, mais bon j'ai un autre problème. Je vais le décrire dans un autre sujet car ça ne correspond plus vraiment au problème.
Bonjour,
c'est normal que tu aies l'erreur, la variable compteur n'existe que dans ta fonction trace(), pas dans le parent. De plus ta fonction trace() ne prend pas de parametre :
function trace(){
Hors tu l'appelles avec un parametre, donc meme si le parametre existait, il ne serait pas pris en compte.
function trace(){
var compteur = 0; // le compteur
var tab = checkbox_val_proprio; // le tableau
// la boucle
for (var i = compteur; i<tab.length; i++) {
compteur += parseFloat(tab[i]); // incr�mente le compteur
trace(parseFloat(tab[i])); // affiche la valeur de l'�l�ment "i" du tableau
}
};
trace(); // ici, pas de parametre
Maintenant l'erreur est : RangeError: Maximum call stack size exceeded.
Ce n'est pas du tout normal...
J'ai bien fais comme tu m'as dis pourtant :
function trace(){
var compteur = 0; // le compteur
var tableauArray1 = checkbox_val_proprio; // le tableau
// la boucle
for (var i = compteur; i<tableauArray1.length; i++) {
compteur += parseFloat(tableauArray1[i]); // incr�mente le compteur
trace(parseFloat(tableauArray1[i])); // affiche la valeur de l'�l�ment "i" du tableau
}
};
trace();