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 :

J'en perds mon latin (pas très élevé, c'est vrai)


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut J'en perds mon latin (pas très élevé, c'est vrai)
    Bonsoir,

    voici un code qui marche très bien (les variables h_xxx sont des variables système) (et il y a des fonctions que j'ai définies ailleurs), mais quand je l'encapsule dans une fonction et que j'appelle celle-ci, j'obtiens une erreur js (mais pas si je mets en commentaires la boucle do-while). Peut-on m'éclairer là-dessus ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    var sesainfo = new Array(3);
    sesainfo[0] = new Array(11);
    sesainfo[1] = new Array(11);
    sesainfo[2] = new Array(11);
    var sesaArray = new Array();
    if(h_CurrentSkinType=='h_Edit') {
    document.write("Use this space to provide information about your experience, interests, favorite links, etc." );
    document.write("<table border=0 width='100%'><tr><td class='h-fieldHeaderEdit-bgtext'>");
    document.write("Name of this page<br><"+"input size='50' type='text' name='h_getName'>");
    document.write("</td></tr><tr><td>&nbsp;</td></tr><tr>");
    document.write("<td class='h-fieldHeaderEdit-bgtext'>");
    document.write("</td></tr></table>");
    } else {
    sesaArray=loadsesa(h_LastEditorDistinguishedName);
    var idNotes=extract_NotesID(h_LastEditorDistinguishedName);
    var ind=0;
    var comp;
    do {
    load_personal_data(sesaArray,ind);
    comp=extract_idnotes_sansfin(sesainfo[ind][8]);
    ind++;
    } while (comp!=idNotes);
    display_photo(sesainfo[ind-1][9],sesainfo[ind-1][1],sesainfo[ind-1][0],ind-1);
    //display_info(sesainfo[ind-1]);
    }
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Peut-être qu'il y a une erreur grosse comme une maison dans le code mais étant fatigué, je n'arrive pas à me concentrer. Pourriez-vous nous donner plus de code (load_personal_data() et extract_idnotes_sansfin()) ainsi que le message d'erreur ?

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    problème de variables globale non définit ?
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Message d'erreur : juste, "il y a des erreurs sur la page".
    load_personal_data :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    function load_personal_data(sesa,ind){
    var URL,codesesa,xmlsesa;
    var topEntry,entry;
    var nomemploye,prenomemploye,adresseemploye,villeemploye,siteemploye,telemploye,cellemploye,mailemploye,idnotesemploye,urlphotoemploye;
    //for (i=0;i<(sesa.length);i++) { // parcourir tous les codes SESA
    // construire l'URL avec les infos donn&eacute;es par le code SESA(du type :
    // http://ids.schneider-electric.com/global/corp/ecd.nsf/xmlemployeesactivebyguid?readviewentries&amp;StartKey=SESA21805&amp;count=1)
    URL='http://ids.schneider-electric.com/global/corp/ecd.nsf/xmlemployeesactivebyguid?readviewentries'+'&'+'StartKey='+sesa[ind]+'&amp;count=1';
    // appeler l'URL
    codesesa="h_sesaList";
    xmlsesa = new ActiveXObject("Microsoft.XMLDOM");
    xmlsesa.async="false";
    xmlsesa.load(URL); // appel URL du code XML à partir du code SESA
    //document.write("URL appel&eacutee.<br>");
    //pour chq item int&eacute;ressant,
    // r&eacute;cup&eacute;rer la valeur
    topEntry=xmlsesa.selectSingleNode("viewentries");
    entry=xmlsesa.selectSingleNode("viewentries/viewentry");
    var sUnid2 = entry.getAttribute('unid');
    nomemploye=entry.childNodes.item(2);
    prenomemploye=entry.childNodes.item(4);
    adresseemploye=entry.childNodes.item(26);
    villeemploye=entry.childNodes.item(30);
    siteemploye=entry.childNodes.item(25);
    telemploye=entry.childNodes.item(14);
    cellemploye=entry.childNodes.item(16);
    mailemploye=entry.childNodes.item(10);
    idnotesemploye=entry.childNodes.item(9);
    urlphotoemploye=entry.childNodes.item(39);
    buemploye=entry.childNodes.item(19);
    sesainfo[ind][0] = nomemploye.text;
    sesainfo[ind][1] = prenfieldNames.REMOTE_USER omemploye.text;
    sesainfo[ind][2] = adresseemploye.text;
    sesainfo[ind][3] = villeemploye.text;
    sesainfo[ind][4] = siteemploye.text;
    sesainfo[ind][5] = telemploye.text;
    sesainfo[ind][6] = cellemploye.text;
    sesainfo[ind][7] = mailemploye.text;
    sesainfo[ind][8] = idnotesemploye.text;
    sesainfo[ind][9] = urlphotoemploye.text;
    sesainfo[ind][10] = buemploye.text;
    //return sesainfo;
    }
    extract_idnotes_sansfin :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function extract_idnotes_sansfin(ch)
    {
    indarobas=ch.indexOf("@");
    ch=ch.substring(0,indarobas);
    return(ch);
    }
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    En cliquant sur le triangle jaune de l'erreur, il affiche une fenêtre avec un peu plus de détails sur l'erreur Javascript.

    Je me pose des questions sur ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function extract_idnotes_sansfin(ch)
    {
       indarobas=ch.indexOf("@");
       ch=ch.substring(0,indarobas);
       return(ch);
    }
    Imaginons qu'il n'y ai pas d'arobase, le substring va chercher de la position -1 à 0 et va renvoyer une chaine "vide". Est-ce bien ce que vous désiriez ?

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Merci pour l'info du triangle jaune : je ne connaissais pas.
    sinon, pas de lézard pour l'arobase : il y en a forcément un.
    Enfin, j'ai vu qu'il bloquait sur des fonctions qui font appel à des variables système que je ne maîtrise pas (tout ça est sur un site intranet), mais ce qui me surprend, c'est que quand le code n'est pas dans une fonction, ça marche bien...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Je rejoins l'idée du Chômeur, peut-être que en mettant le code dans une fonction, vous rendez locales des variables qui aurait du être globales car elles sont utilisées par d'autres fonctions ?!

    Détectez les variables en question et laissez-les globales.

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    c'est certain ...
    mais sans la page complète dur dur de savoir laquelle pose problème
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Merci pour la piste ; j'ai renommé toutes mes variables locales, ce qui m'a permis d'aller un peu plus loin, mais maintenant il bute sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var sUnid22 = entry2.getAttribute('unid');
    avec une erreur du type "null a la valeur Null ou n'est pas un objet". Moi, ça ne m'aide pas : avez-vous une idée ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Renommer les variables locales ? J'aurais plutôt sorti les variables globales.

    Sinon, il faudrait voir (par un alert par exemple) si entry2 est bien un objet, et vérifier si il y a un "unid" définit dans le "viewentries/viewentry".

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Qu'est-ce que vous appelez "sortir les variables globales" ? Sinon, quand, j'affiche entry2, il me donne entry2=null ; mais ça marche si je n'incorpore pas ce code dans une fonction : bizarre...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  12. #12
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Faudrait voir la nouvelle version de load_personal_data(sesa,ind), c'est-à-dire avec vos nouveaux noms de variables.
    Mais bon, je reviendrais en arrière, avec les anciens noms de variables et je sortirai de load_personal_data(sesa,ind) les variables qui sont normalement globales. Lesquelles exactement, ça je ne le sais pas. Soit vous avez tout le code et vous pouvez voir qui utilise quelles variables, soit vous testez une par une.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Je sors quelques variables de la fonction, elles perdent le statut de local et deviennent globales car qqun d'autre les utilisent.
    var topEntry,entry;
     
    function load_personal_data(sesa,ind){
    //Je garde quelques variables locales car elles n'ont lieu d'exister que dans cette fonction.
    var URL,codesesa,xmlsesa;
    var nomemploye,prenomemploye,adresseemploye,villeemploye,siteemploye,telemploye,cellemploye,mailemploye,idnotesemploye,urlphotoemploye;
    [...]
    //return sesainfo;
    }

Discussions similaires

  1. <table> : J'y perd mon latin !
    Par zakuli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/02/2009, 16h32
  2. Problème de typage: j'en perds mon latin
    Par Garulfo dans le forum Caml
    Réponses: 7
    Dernier message: 10/06/2008, 13h22
  3. getElementsByName - j'y perds mon latin !
    Par herve42 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/08/2007, 20h04
  4. Réponses: 6
    Dernier message: 23/05/2005, 15h38

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