.innerHTML pour afficher une fonction

Country714 Messages postés 1 Date d'inscription mercredi 6 janvier 2016 Statut Membre Dernière intervention 6 janvier 2016 - Modifié par jordane45 le 6/01/2016 à 17:02
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 19 janv. 2016 à 15:46
Bonjour,

Je débute à Javascript et je n'arrive pas à afficher une fonction en HTML en utilisant .innerHTML... Je ne vois vraiment pas ce qui cloche....

JAVASCRIPT:
var somme = 0;
var nombre = 100;
var tableau = [];


//remplir un tableau de 100 cases et l'afficher grâce à .innerHTML

function remplissage(tableau,nombre){
  for(i=0;i<nombre;i++){
    tableau[i]=i;
  }
  document.getElementById("tableau2").innerHTML=tableau.join();
}

//Calculer la moyenne par une fonction et l'afficher

function moyenne(tableau){
  for(i=0;i<tableau.length;i++){
    somme+=tableau[i];
  }
  moyenne = somme/tableau.length;
  return moyenne;
  
}

document.getElementById("moyenne2").innerHTML=moyenne(tableau);

//appel
remplissage(tableau,nombre);
afficher("Moyenne 0 à 100", moyenne(tableau));



HTML:
<p id="tableau2"></p>
Moyenne:<p id="moyenne2"></p>



Le message NaN s'affiche...

Je vous remercie d'avance pour votre précieuse aide!


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
6 janv. 2016 à 17:05
Bonjour,

En utilisant les outils de debogage de ton navigateur internet (perso.. je te recommande d'utiliser le plugin FireBug pour FireFox )
Tu obtiens ceci :

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
6 janv. 2016 à 17:09
Ensuite... tu regarderas bien ton code....
Tu cherches à afficher la Moyenne ...... AVANT d'avoir fait le remplissage de ton tableau....
0
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
Modifié par jordane45 le 19/01/2016 à 15:19
function moyenne(tableau){
  for(i=0;i<tableau.length;i++){
    somme+=tableau[i];
  }
  moyenne = somme/tableau.length;
  return moyenne;
  
}


Je pense que la réponse au non fonctionnement de votre code se trouve dans la rédaction de la fonction moyenne.
Dans une fonction, vous pouvez utiliser les paramètres qui sont placés entre parenthèses (ici tableau). Mais vous ne pouvez pas utiliser le nom de la fonction comme variable. La fonction devra être récrite comme suit :
function moyenne(tableau) {
  var i = 0, moy = 0, somme = 0;
  for (; i < tableau length; i++) {
       somme += tableau[i];
       }
  moy = somme/tableau.length;
  return moy;
}


Anomalies à corriger :
- toujours déclarer les variables locales avec var car les variables non déclarée deviennent globales, cela peut donner des effets inattendus en cas de réutilisation de ces noms de variables.

- ne jamais utiliser le nom de la fonction comme nom de variable locale. Le nom de la fonction peut être utilisé à l'intérieur d'une fonction récursive, mais dans ce cas il sera toujours accompagné des parenthèses ex. moyenne().

- les variables d'incrémentation (ici i) doivent aussi être déclarées, dans notre cas deux possibilités:
-- en début de fonction comme je viens de le faire,
-- dans la boucle for comme ceci : for (var i = 0; i<tableau.length; i++) {

Bon courage!.....
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
19 janv. 2016 à 15:46
Bonjour,


Je pense que la réponse au non fonctionnement de votre code se trouve dans la rédaction de la fonction moyenne.

Non.
Comme indiqué dans mon message précédent (du 6 Janvier) ... le premier souci vient d'une fonction appelée... inexistante !


Dans une fonction, vous pouvez utiliser les paramètres qui sont placés entre parenthèses (ici tableau). Mais vous ne pouvez pas utiliser le nom de la fonction comme variable.

Ah ??
Pourtant ça fonctionne très bien.... (même si je suis bien d'accord.. que c'est à éviter (surtout pour éviter de se mélanger les pinceaux..))


toujours déclarer les variables locales avec var car les variables non déclarée deviennent globales,

Il ne me semble pas (pour le côté global...)
Par contre, une chose est sûr... certains navigateurs (surtout IE pour ne pas le citer) n’apprécient pas.
Il est donc, en effet, fortement recommandé de déclarer ses variables avec le var.

Pour déclarer une variable "globale" il suffit de la déclarer en dehors de toute fonction.
par exemple :
var mavaribleglobale = "toto";

function test(){
 alert(mavaribleglobale );
}

0
Rejoignez-nous