Problème de variable dans fonction récursive [Résolu]

Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
- - Dernière réponse : PetoleTeam
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 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 ??????)
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Bul3
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
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
Commenter la réponse de Bul3
Messages postés
4934
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
7
0
Merci
et peut-être
varnChilds = node.childNodes.length;
te conviendrait-il ? va savoir ?
[mon Site][M'écrire]Bul
Commenter la réponse de Bul3
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
0
Merci
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;

;O)
Commenter la réponse de PetoleTeam