Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lignes Tableau et récupération d'initiales

ajout, suppr Lignes

    30 juillet 2009 à 14:48:25

    Bonjour,

    J'aurai besoin d'aide pour répondre à une demande envers laquelle je dois utiliser du javascript. Or, je débute dans ce domaine.

    But: Ajouter un utilisateur dans un tableau.

    Pour cela:
    - On rentre un prénom et un nom d'utilisateur puis, une fonction en javascript s'assure que la syntaxe est bonne : "Prénom NOM".
    - Ensuite pour former l'id de l'utilisateur une fonction doit récupérer les initiales : " PN ".
    - Enfin une fonction s'occupe d'ajouter une ligne à la fin du tableau.

    Voici les scripts que j'ai tenté de réalisés, mais que ne marchent pas:

    fonction pour la syntaxe:
    function nameSyntaxe(firstAndLastName)
    	{
    		var name = firstAndLastName;
    		var i =0;
    		
    		//S'il y a un espace, allé au caractère suivant
    		while(name.charAt(i) = '&#32') // 32 est le code ASCII de la touche ESPACE
    		{	
    			i++;
    		}
    		name.toUpperCase((name.charAt(0))); //Première lettre du prénom en Majuscule
    						
    		for(i=1; name.charAt(i) != '&#32'; i++)
    		{
    			name.toLowerCase((name.charAt(i))); // tant qu'il n'y a pas d'espace, mettre en minuscule.
    		}
    		name.toUpperCase((name.substring(i))); // Mettre le nom en MAJUSCULE
    		
    		return name;
    	}
    


    Fonction pour récupérer les initiales:
    function RecupInitiales(name)
    	{
    		var initiales;
    		var i=0;
    		
    		//S'il y a un espace, voir le caractère suivant
    		while(name.charAt(i) = '&#32')
    		{
    			i++;
    		}
    		i++;
    		initiales = name.charAt(i);//récupérer la première lettre du prénom
    		
    		//lire les caractères un à un jusqu'au prochain espace
    		while(name.charAt(i) != '&#32')
    		{
    			i++;;
    		}
    		i++;
    		//allé jusqu'au prochain caractère autre qu'un espace
    		while(name.charAt(i) = '&#32')
    		{
    			i++;
    		}
    		i++;
    		initiales += name.charAt(i); 
    		
    		return initiales;
    	}
    


    Et enfin les fonctions d'ajout et suppression de lignes:
    function addEmployee(firstAndLastName) //ajouter un employé
    	{	
    	    var name = nameSyntaxe(firstAndLastName); //on s'assure que de mettre le nom dans une bonne syntaxe
    		var initiales = initiales('name');
    		
    		var table = document.getElementById('Employees');  // récupérer le tableau d'employés
    		var newRow = table.insertRow(-1)               // y ajouter une ligne à la fin
    		
    		//ajouter la première case qui aura comme attributs <TD id="initiales du nom" , class="column1"> name </TD>
    		var newCell = newRow.insertCell(0);                
    		newCell.innerHTML = '<TD id ="'initiales'" class="column1">' name '</TD>';
    		
    		newCell = newRow.insertCell(1);
    		newCell.innerHTML = '<TD class="column2"> tel </TD>';
    		
    		newCell = newRow.insertCell(2);
    		//Création d'un button activant la fonction de suppression de la ligne actuelle.
    		var bouton = document.createElement("input");
    		bouton.type = "button";
    		bouton.value = "Supprimer";
    		bouton.onclick = function()
    						{
    							suppression()
    						};
    		newCell.appendChild(bouton);		
    	}
    	
    	
    	function suppression() 
    	{
    		document.getElementById('Employees').deleteRow(-1);
    	}
    


    Merci d'avance, :)
    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2009 à 15:24:39

      Et qu'est-ce qui ne fonctionne pas ?

      L'une des fonctions ? Toutes les fonctions ?

      Quel code HTML utilises-tu pour aller avec ?
      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2009 à 19:07:15

        Ce qui ne fonctionne pas, justement je me le demande, je me disais qu'une erreur sauterait peut être aux yeux de quelqu'un.

        Sinon niveau html pour faire simple on a quelque chose dans ce style:

        <table id="Employees">
          <tr> 
            <th> Personnes </th>
            <th> caract&eacute;ristique (par exemples mail) </th>
            <th>  xxxxxx </th>
          </tr>
          <tr>
            <td id="initiales"> Prenom NOM </td>
            <td> xxxxx </td>
            <td> xxxxx </td>
          </tr>
        </table>
        
        <a onclick="addEmployee('Prenom NOM')"> Ajouter une personne </a>
        


        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2009 à 19:13:46

          Y'a plusieurs choses...

          Déjà, t'as un problème à cette ligne de la fonction addEmployee() :

          newCell.innerHTML = '<TD id ="'initiales'" class="column1">' name '</TD>';
          


          Tes variables doivent être concaténées grâce à l'opérateur "+" :
          newCell.innerHTML = '<TD id ="'+initiales+'" class="column1">' +name+ '</TD>';
          


          Ensuite, dans la fonction nameSyntaxe(), ton while est bizarre... tu voulais surement écrire "==" plutôt que "=" ?
          while(name.charAt(i) = '&#32') // 32 est le code ASCII de la touche ESPACE
          


          Et finalement la boucle for() qui suit tourne à l'infini...

          for(i=1; name.charAt(i) != '&#32'; i++)
          


          Bref, regarde la console d'erreurs de firefox, tout y est marqué. ;)
          • Partager sur Facebook
          • Partager sur Twitter
            31 juillet 2009 à 1:41:49

            Ah merci :) ,
            Des petites erreurs , mais à grands effets, je vais vite m'en occuper. Par contre je dois le faire tourner sur i.e 6 , là :/ . Pas de mozilla sur le poste du boulot, donc je sais pas s'il y a une console d'erreur sur i.e 6, je vais regarder.
            Encre Merci
            • Partager sur Facebook
            • Partager sur Twitter
              3 août 2009 à 9:35:32

              J'ai réparé les fautes dont tu m'a parlé.
              Maintenant quelque chose s'éxécute cependant le message d'erreur ci-dessous
              apparait.

              message d'erreur: Un script présent sur cette page ralentit internet
              explorer. S'il continue à être éxécuté votre ordinateur ne pourra peut être
              plus réagir.

              Je dois avouer que ne pas avoir de debugger est assez handicapant.

              Sinon d'un point de vue algorythmique sous un langage JS, ça semble correct
              ?
              • Partager sur Facebook
              • Partager sur Twitter
                3 août 2009 à 10:25:10

                A vrai dire pour ton problème, l'utilisation des regex est plutôt recommandée.
                Ça te simplifierait énormément la tache ;)
                Par exemple la 1ère fonction avec des regex :
                function nameSyntaxe(firstAndLastName)
                	{
                		var result = firstAndLastName.match(/^\s*([a-zA-Z]+)\s+([a-zA-Z]+)\s*$/i)
                		return (result[1].slice(0,1)).toUpperCase() + (result[1].slice(1)).toLowerCase() + result[2].toUpperCase();
                	}
                

                Plus simple non ?
                :lol:
                • Partager sur Facebook
                • Partager sur Twitter
                  4 août 2009 à 11:02:06

                  Voici donc les fonctions suite à vos conseils.
                  Cependant, lorsque j'éxécute le script j'obtient une "erreur sur la page" indiquée dans la barre d'état.


                  function addEmployee(firstAndLastName) //ajouter un employé
                  	{	
                  	    var name = nameSyntaxe(firstAndLastName); //on s'assure que de mettre le nom dans une bonne syntaxe
                  		var initiales = initiales('name');
                  		
                  		var table = document.getElementById('Employees');  // récupérer le tableau d'employés
                  		var newRow = table.insertRow(-1)               // y ajouter une ligne à la fin
                  		
                  		//ajouter la première case qui aura comme attributs <TD id="initiales du nom" , class="column1"> name </TD>
                  		var newCell = newRow.insertCell(0);                
                  		newCell.innerHTML = '<TD id ="'+initiales+'" class="column1">' +name+ '</TD>';
                  		
                  		newCell = newRow.insertCell(1);
                  		newCell.innerHTML = '<TD class="column2"> tel </TD>';
                  		
                  		newCell = newRow.insertCell(2);
                  		//Création d'un button activant la fonction de suppression de la ligne actuelle.
                  		var bouton = document.createElement("input");
                  		bouton.type = "button";
                  		bouton.value = "Supprimer";
                  		bouton.onclick = function()
                  						{
                  							suppression()
                  						};
                  		newCell.appendChild(bouton);		
                  	}
                  


                  function suppression() 
                  	{
                  		document.getElementById('Employees').deleteRow(-1);
                  	}
                  


                  function nameSyntaxe(firstAndLastName)
                  	{
                  		var result = firstAndLastName.match(/^\s*([a-zA-Z]+)\s+([a-zA-Z]+)\s*$/i);
                  		return (result[1].slice(0,1)).toUpperCase() + (result[1].slice(1)).toLowerCase() + result[2].toUpperCase();
                  	}
                  


                  function RecupInitiales(name)
                  	{
                  		var result = name.match(/^s*([A-Z])[a-z]*\s+([A-Z]+)\s*$/i);
                  		return result[1] + result[2].slice(0,1);
                  	}
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 août 2009 à 11:12:22

                    A la ligne 4 :
                    var initiales = initiales('name');
                    

                    ce ne serait pas plutôt :
                    var initiales = RecupInitiales('name');
                    

                    ???
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 août 2009 à 11:39:19

                      Citation : louf404

                      A la ligne 4 :

                      var initiales = initiales('name');
                      


                      ce ne serait pas plutôt :

                      var initiales = RecupInitiales('name');
                      


                      ???



                      Il y a des fois où je me sens bètes.....


                      Malgré cela, il y a toujours "erreur sur la page"
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 août 2009 à 11:50:36

                        Euh... aucune précision dans l'erreur ? parce que là... :-°

                        Sinon vérifie que :
                        document.getElementById('Employees');
                        

                        ne renvoi pas null...

                        Que IE supporte les fonctions de gestion des <table> html...
                        Et juste comme ça parce que ça fait moche :p , rajoute le point-virgule à la fin de la ligne 7...
                        (sinon essaye de mettre des alert un peu partout pour voir à quel moment ça bug...
                        Exemple :
                        alert('1');
                        alert(var); // erreur, normalement
                        alert('2');
                        

                        Le 2 ne s'affichera pas)
                        ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 août 2009 à 12:26:02

                          Hihi louf, ton dernier exemple ne produit aucune erreur... ça affiche le tableau contenant 1 ;)

                          Bladelight, quand tu doubles-cliques sur "erreurs sur la page", ça t'affiche normalement le détail de l'erreur... Peux-tu le donner ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 août 2009 à 12:28:27

                            Citation : Golmote

                            Hihi louf, ton dernier exemple ne produit aucune erreur... ça affiche le tableau contenant 1 ;)


                            Mince ! :lol: Bon là ça devrait faire un erreur...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 août 2009 à 16:21:50

                              Voici le détail d'erreur

                              Ligne: 766
                              Car: 1
                              Erreur: Objet attendu
                              Code: 0

                              Ligne: 1150
                              Car: 1
                              Erreur: Objet attendu
                              Code: 0

                              Le problème est que je n'ai que 697ligne....

                              Les autres lignes appartiennent au xhtml formant la page sharepoint, or je n'y ai pas accés.
                              Du coup dur de savoir vraiment d'où ça provient.

                              Enfin si vous avez une idée, c'est pas de refus :).
                              • Partager sur Facebook
                              • Partager sur Twitter
                                5 août 2009 à 16:28:19

                                Peut-être des includes quelque part ?
                                (de php ou autre)
                                (je ne sais pas si quand on inclut un script JS avec src, ça ne s'ajoute pas... je suis pas trop sur là)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  6 août 2009 à 2:01:51

                                  Je crois que les scripts JS inclus en avec src sont comptabilisés dans le n° de ligne, avec IE.

                                  C'est chiant... mais bon, tu peux peut-être faire une approximation (surtout si tes scripts sont inclus dans le <head> de la page : juste quelques lignes à soustraire...)

                                  EDIT : Tu pourrais pas essayer ta page sous FF déjà ? Histoire d'avoir une console potable pour les erreurs multi-browser ? (Après, il ne restera que les erreurs spécifiques à IE, qui sont normalement caractéristiques)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    6 août 2009 à 14:33:48

                                    Je vais tenter de m'arranger pour pouvoir tester mon script sous FF, je vous tiens au courant,
                                    Encore merci pour votre aide.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Lignes Tableau et récupération d'initiales

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown