IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

arguments function


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Points : 27
    Points
    27
    Par défaut arguments function
    Une erreur de script apparement mais j'vois pas d'ou ça vient:
    Firefox me dit que les arguments "no" et "size" ne sont pas définit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function aff_stats_redim(no, size) {
    if (document.getElementById('progress_bar_'+no).width > size + 5)
    	{
    		document.getElementById('progress_bar_'+no).width = document.getElementById('progress_bar_'+no).width - 5;
    		setTimeout('aff_stats_redim(no, size)', 200);
    	}
    Dans ce cas si, les arguments de la fonction aff_stats_redim ne sont pas définit quand j'appelle la fonction via le setTimeout... Alors que ces 2 variables existent plus haut dans le code... (la fonction alert() me le confirme !)
    Et bizarement, dans ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function aff_stats_redim(no, size) {
    if (document.getElementById('progress_bar_'+no).width > size + 5)
    	{
    		document.getElementById('progress_bar_'+no).width = document.getElementById('progress_bar_'+no).width - 5;
    		aff_stats_redim(no, size);
    	}
    C'est à dire la même sans le setTimeout, les variables sont bien définies quand je rappelle la fonction...
    Alors si quelqu'un a une idée d'où peut venir le problème..

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    ah.. exacte mais ca change rien à mon probleme !
    (par ailleurs, ca marchait tres bien sans le style.. )

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementById('progress_bar_'+no).style.offsetWidth > (size + 5))
    essaye de coller des messages d'alert ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementById('progress_bar_'+no).style.offsetWidth > (size + 5))

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Cette partie là du code marche...
    Mais c'est cette partie ou les variables sont dites indéfinies:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setTimeout('aff_stats_redim(no, size)', 200);

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    oui, le pbm surgit qd tu repasses en paramètre des variables via un setTimeout();

    si tu regardes de près, tu verras que les variables sont vides à partir du 2e passage;
    la solution, c'est de ne les passer qu'une fois!

    voici ce que je te propose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var no2, s;
    function aff_stats_redim(no, size) { 
    if(!no2){
    no2=document.getElementById('progress_bar_'+no);
    s=size};
    if (no2.width  > s + 5) {no2.width -=5}
    setTimeout('aff_stats_redim()', 200); 
    }

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Bah en effet, en déclarant la variable en dehors de la fonction et en la définissant avant d'executer celle-ci ça marche.. Mais c'est vraiment bizare comme erreur et ça m'allourdit le script.. Personne ne sait d'où ça provient :

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    honnêtement, ça n'alourdit rien et ça permet au système de fonctionner

    le paramètre de la fonction n'est pas une vraie variable: il ne prend une valeur que si tu en passe une (!) lors de l'appel de fonction;

    dans ton setTimeout(), croyant retransmettre tes premières valeurs, tu transmets uniquement des paramètres null


    (la méthode que je t'ai montrée est éprouvée: si elle te paraît si lourde, vois si tu peux tout bêtement te passer de paramètres, en passant par l'objet event, par exemple)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Nan merci pour les events ca va aller. Merci pour votre aide. Maintenant que ça fonctionne bien, il ne manque plus que le tag résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/08/2010, 00h21
  2. Réponses: 9
    Dernier message: 26/07/2007, 16h35
  3. No function matches the given name and argument types.
    Par Davboc dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/05/2007, 11h25
  4. Réponses: 4
    Dernier message: 10/04/2006, 22h30
  5. Réponses: 5
    Dernier message: 10/03/2006, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo