glipper
Messages postés246Date d'inscriptiondimanche 2 juin 2002StatutMembreDernière intervention11 septembre 2016
-
2 févr. 2009 à 19:05
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
3 févr. 2009 à 18:23
Bonjour,
j'essai de faire une fonction recursive en javascript, qui parcourt tous les sous-noeuds contenus dans un noeud.
function clearBloc(node) {
if (node.hasChildNodes()) {
nChilds = node.childNodes.length;
for (i=0; i<nChilds; i++)
clearBloc(node.childNodes[i]);
}
}
Il me semble que ça devrait fonctionner. Pourtant, la valeur de la variable 'nChilds' change losque la fonction se rappelle elle-même. C'est assez étrange, puisque la variable nChilds est déclaré à l'interieur de la fonction, donc ce n'est pas une variable globale. Alors je ne comprend pas trop ce qui se passe.
J'ai fait des recherches sur la recursivité dans les scripts javascript, et apparament il ne devrait pas y avoir de problèmes j'ai l'impression. Quelqu'un aurait-il une idée du problème ?
Actuellement :
entree_fonction (nChild vaut 20)
---> entree_fonction (nChild vaut 1)
---> entree fonction
---> sortie fonction
---> sortie fonction (nChild vaut 1)
sortie fonction (nChild vaut 1 ??????)
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 3 févr. 2009 à 06:54
j'aurais du répondre :
>>puisque la variable nChilds est déclaré à l'interieur de la fonction, donc ce n'est pas une variable globale
elle n'est pas déclarée justement : donc c'est variable globale
var permet de déclarer.
[mon Site][M'écrire]Bul
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 3 févr. 2009 à 05:02
bonjour,
>>la valeur de la variable 'nChilds' change losque la fonction se rappelle elle-même
ben... puisque tu la recalcules : nChilds = node.childNodes.length; ça me semble normal
Cordialement[mon Site][M'écrire]Bul
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 3 févr. 2009 à 18:23
Bonjour,
tout à fait vrai mon cher Bul3 on le le dira jamais assez de déclarer les
variables avec le mot clé var et de mettre un
; en fin d'instruction
Tiens juste pour
test
<html>
<head>
<script type= "text/javascript">
//-------------
function Test(){
i = 0;
for( ;i<10;i++);;;;
alert("Test()\n i = " +i);
}
Test();
alert("Hors Fct\n i = " +i);
</script>
</head>
</html>
il suffit de
rajouter un var devant le i = 0; pour voir le résultat...
var i = 0;