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 :

Explication de code avec la fonction map


Sujet :

JavaScript

  1. #1
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut Explication de code avec la fonction map
    Bonjour,

    Je suis charg�e de continuer une application d�velopp�e par une autre personne. Je suis actuellement entrain de "d�bugger" le programme, et je bloque sur une partie de code JavaScript...
    En gros j'ai un formulaire :

    Code HTML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    <form method="post" onsubmit="JavaScript:initIndexation();" action="" name="formulaire" id="formBiblio">
    	Fichier (XML ou ZIP) :
        <input id="fichier" name="fichier" type="file"/>
        <br>
    <input type="submit" name="submit" value="Importer"/>
    </form>

    et ma fonction JS :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function initIndexation() {
    	// récupérer tous les noms de fichier et les mettre dans un tableaux
    	var files = $$('.file').map(function(elt){
    			return elt.innerHTML;
    		});
    if(files.length > 0) { //blabla ça marche
    }
    else{
    //blabla message d'erreur (fichier non valide)
    }
    }
    Le probl�me, c'est que quand je fais tourner le programme, j'ai files.length = 0, donc je me retrouve dans le cas du else, et j'ai un joli message d'erreur. Pourtant, c'est un bien un fichier XML que je passe en param�tre.

    Etant d�butante en JS, j'ai essay� de me renseigner sur la fonction map, qui semble permettre de mettre dans un tableau les r�sultats de la fonction.

    La fonction innerHTML semble permettre de modifier une partie du contenu d'une page apr�s son chargement. Bon admettons, m�me si je ne comprends pas trop pourquoi on fait �a...

    En ce qui concerne le $$('.file') , l� le myst�re reste entier, je n'ai pas encore vu de $ en JS... (ai-je mal cherch� ?)

    En tout cas, toute aide est la bienvenue si vous comprenez ce code...

  2. #2
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Bonjour,

    Je sais qu'il y a beaucoup de posts sur cette partie du forum, mais il n'y a personne pour m'expliquer ce que peut signifier ??? Et le pourquoi de l'utilisation des $$ ? Je pense que c'est � cause de cela que mon programme ne fonctionne pas, puisque la variable files est vide...
    Un simple lien vers une explication ou une d�but d'explication pourra m'aider...

    Le formulaire prend en param�tre un fichier qui peut soit �tre un zip qui contient plusieurs fichier XML, soit un seul fichier XML. Le d�but de la fonction initIndexation sert � mettre l'ensemble des fichiers dans un tableau files. Si le tableau est vide (files.lenght = 0) alors on envoie un message d'erreur, sinon on peut indexer les fichiers.

    Le code entier est assez compliqu� (j'ai des fichiers xsl, xsp, js, ...) et tourne � l'aide de la plateforme Java SDX (Cf ce post si vous voulez plus de d�tails sur cette application : http://www.developpez.net/forums/sho...d.php?t=420947), mais je pense que le probl�me vient de la partie du code JavaScript que je vous ai donn�.

    Merci d'avance pour le moindre d�but d'aide que vous pourrez m'apporter, car je suis � court d'id�es...
    Mlny.

  3. #3
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Je continue de me m'arracher les cheveux sur mon probl�me...
    J'ai essay� de remplacer
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    var files = $$('.file').map(function(elt){
    			return elt.innerHTML;
    		});
    par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    	var files = new Array();
    	files[0] = fichier;
    	for(i=0;i<files.length;i++){
    	files[i] = files[i].innerHTML;
    	}
    En me disant que j'allais tester pour un fichier XML (je laisse tomber les ZIP pour le moment...), mais au lieu d'�tre dans le cas du if ou du else, l'application s'arr�te, la page ne finie pas de se charger...

    Quelqu'un a une id�e sur l'erreur que j'ai commise? Car les 2 codes ne sont pas �quivalents...

  4. #4
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Bonjour,

    Mon monologue continue... (si vous voulez intervenir, n'h�sitez pas !)
    J'ai continu� mes recherches, et il semblerait que $() appartienne la biblioth�que prototype et que $() soit un raccourci vers document.getElementById()
    J'ai finalement pu trouver quelques explications sur le $$('.file')
    D'apr�s ce lien (en anglais) : http://www.prototypejs.org/api/utility/dollar-dollar, on a les exemples suivants :
    $$('div');
    // -> all DIVs in the document. Same as document.getElementsByTagName('div')!

    $$('#contents');
    // -> same as $('contents'), only it returns an array anyway.

    $$('li.faux');
    // -> all LI elements with class 'faux'
    Je suppose donc que $$('.file') doit repr�senter l'ensemble des fichiers du document..., non?
    Pourtant, j'ai toujours mon files.length = 0
    J'ai test� en mettant $$('file') (sans le .), cela me donne exactement la m�me chose...
    Quelqu'un a une id�e du pourquoi mon code (Cf 1er post) ne marche pas ???
    svp

  5. #5
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Bon, je continue de r�fl�chir...

    Il y a une deuxi�me interpr�tation pour le $$('.file')...
    En effet, voici une partie du code qui correspond � mon fichier xsp :
    Code XML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    </xsp:logic>
    <snd:file><xsp:expr>file.getName()</xsp:expr></snd:file>
    <xsp:logic>
    et une partie du code de mon fichier xsl :
    Code XML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    <xsl:for-each select="snd:file">
    <span class="file"><xsl:value-of select="text()"/></span>
    </xsl:for-each>
    Donc avec le JavaScript derri�re (fichier js, cf premier post), le $$('.file') pourrait correspondre � l'ensemble qui appartient � la classe "file".

    Sinon, j'ai bel et bien un fichier prototype.js avec mes fichiers JavaScript, et il est bien import�, donc pourquoi cela ne marche pas ???

    La moindre petite piste ou r�ponse de la part de quelqu'un pourrait m'aider �norm�ment, merci.

  6. #6
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Je ne sais pas si �a int�ressera quelqu'un (� part peut �tre Celira ), mais je poste quand m�me la solution � mon probl�me.

    J'ai donc enfin fini par comprendre d'o� venait le probl�me : non pas de mon fichier JS (donc tout le code pr�c�demment cit� est bon, si vous voulez le r�utiliser...) mais d'une condition de mon fichier xsp (je ne vous ai pas mis le code de tout mes fichiers, sinon il y en aurait eu pour des pages, et pour moi le probl�me venait du JS) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if(file.getName().matches("^\\d{10}\\.xml$"))
    En m'aidant de ce document, j'ai pu comprendre que le fichier XML devait avoir comme titre 10 chiffres exactement (ex : 1234567890.xml), et donc les fichiers que j'essayais d'importer ne marchait pas, le programme ne passait pas dans la condition, et mon tableau files �tait vide...

    Dommage qu'on ne m'ai pas donn� de monde d'emploi, �a m'aurait �vit� bien des soucis...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Explication de code avec fork
    Par Nymar dans le forum C
    R�ponses: 8
    Dernier message: 18/03/2013, 14h07
  2. R�ponses: 0
    Dernier message: 18/03/2011, 16h10
  3. [code::blocks] Cr�er une dll avec des fonctions en C
    Par dewey01 dans le forum Code::Blocks
    R�ponses: 0
    Dernier message: 29/09/2008, 15h24
  4. Probl�me de fonction "const" avec une std::map
    Par Clad3 dans le forum SL & STL
    R�ponses: 3
    Dernier message: 02/01/2007, 12h38
  5. R�ponses: 2
    Dernier message: 17/05/2006, 11h43

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