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 :

Ajout /Suppression dans un array


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2015
    Messages
    226
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par d�faut Ajout /Suppression dans un array
    Bonjour.
    D�sol� pour le double poste. je voulais supprimer l'autre (http://www.developpez.net/forums/d15...ression-array/ ) mais je ne trouve pas comment faire...

    Je rencontre un probl�me pour g�rer les donn�es d'un array.
    Je m'explique : j'ai un tableau http://img11.hostingpics.net/pics/534052tableauhtml.png

    et je voudrais que lorsque je clic sur une ligne du tableau, la valeur de la 1ere cellule de la ligne soit ajout�e ou enlev�e d'un array selon si la ligne est s�lectionn�e ou deselectionn�e.
    L'ajout dans l'array fonctionne mais je souhaite aussi impl�menter la suppression dans l'array car le tableau est sur plusieurs pages (et je souhaite pouvoir revenir sur la page pr�c�dente pour deselectionner des cellules)

    https://jsfiddle.net/Flavors/nuzo8gn2/21/

    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
    44
    45
    46
    47
    48
    49
    50
     
    //Fonction JS pour selectionner les lignes
    	var $marques = $('.marques');//déclaration en variable globale
    	var liste_marque = [];//déclaration en variable globale
    	$('tbody').on( 'click', 'tr', function () //Lors d'un clic sur une ligne du tableau mais pas sur l'en-tête
    	{
    		$dataTr = $(this).data('tr');//le data-tr des ligne vaut "ligne_x"
    		$trList = $("tr[data-tr=" + $dataTr + "]"); //On liste tous les TR qui on le même attribut ("ligne_tr")
     
    		if($(this).hasClass('selected'))//Si la ligne cliqué à la classe "selected"
    		{
    			Suppr_Liste(); //fonction de suppression dans la liste
    			$trList.removeClass('selected'); //On enleve la classe "selected"
    		}
    		else
    		{
    			$trList.addClass('selected'); //On ajoute la classe "selected"
    			Ajout_Liste()//fonction d'ajout dans la liste
    		}
    		liste_marque.length ? $marques.text(liste_marque.join(', ')) : $marques.text(''); //On affiche la liste
    	});
     
    	//Fonction JS pour Mettre à jour la liste des elements selectionnes
    	function Ajout_Liste()
    	{	
    		$('.selected').each(function() //Pour chaque element ayant la classe "selected"
    		{
    			var id = $('.col_marque', this).html(); //on recupere la valeur de la 1ere cellule
    			var position = liste_marque.indexOf(id) //On prend sa position dans la liste
    			if(('undefined' != typeof(id)) && (position == -1)) //Si id existe et n'est pas présent dans la liste_marque
    			{
    				alert("Il n'existe pas dans la liste, on l'elenve");
    				liste_marque.push(id); // On l'ajoute à la liste
    			}
    		});   
    	}
     
    	function Suppr_Liste()
    	{	
    		$('.selected').each(function()//Pour chaque element ayant la classe "selected"
    		{
    			var id = $('.col_marque', this).html();//on recupere la valeur de la 1ere cellule
    			var position = liste_marque.indexOf(id)//On prend sa position dans la liste
    			if(position != -1)//Si il est déjà dans la liste
    			{
    				alert("Il existe dans la liste, on l'elenve");
    				liste_marque.splice(position,1); //On enleve l'element de la liste
    			}
    		}); 
    	}
    Le probleme c'est que lors de la suppression je boucle sur tous les "selected" mais je n'arrive pas � voir comment n'en selectionner qu'un seul...

    Si quelqu'un � une piste, ce serait gentil.

    Merci

  2. #2
    Membre chevronn�
    Avatar de Darkaurora
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par flavors Voir le message
    Le probleme c'est que lors de la suppression je boucle sur tous les "selected" mais je n'arrive pas � voir comment n'en selectionner qu'un seul...
    Pas compris !?! Ton jsFiddle me semble ok tu s�lectionnes �a ajoute dans le tableau tu d�s�lectionnes �a retire du tableau, je ne vois pas ou est le probl�me ?

  3. #3
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2015
    Messages
    226
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par d�faut
    Merci de votre r�ponse:

    En effet, je me suis mal exprim�. En fait quand je d�selectionne une ligne, je veux que seule cette valeur soit supprim� de l'array et non pas que l'array se vide enti�rement.
    Comme plus tard comme mon tableau sera sur plusieurs pages, je souhaite transmettre l'array de page en page. De la sorte si j'arrive sur une page ou j'avais d�j� selectionn� des lignes du tableau, elles se reselectionnent automatiquement et si je les deselectionnes, elles sont supprim� de l'array mais pas celles qui restent selectionn�es.
    Dans un 1er temps je pensais faire cela
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    if($(this).hasClass('selected'))
    {
    	Suppr_Liste(); //je purge la liste
    	$trList.removeClass('selected');//On enleve la classe "selected" à la ligne sélectionnée
            Ajout_Liste() //reremplir la liste avec les éléments sélectionnés
    }
    Mais si je fais �a je perds les �l�ments s�lectionn�s des autres pages...
    Je viens de me rendre compte que je me suis un peu laiss� emport� dans mon explication...><
    Si ce n'est pas clair n'h�sitez pas � me le faire savoir.

  4. #4
    Membre chevronn�
    Avatar de Darkaurora
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par d�faut
    Le probl�me de ton code est que tu parcours tes lignes de tableau sans jamais passer une r�f�rence de suppression ce qui entra�ne la suppression de tout ton tableau. Si tu ne souhaites supprimer que la valeur de la ligne d�s�lectionn�e alors fait comme ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Suppr_Liste($(this)); // on passe l'objet jquery correspondant à la ligne désélectionnée l.13
    // on modifie la fonction Suppr_liste comme suit:
    function Suppr_Liste($tr)
    {	//alert("Entrée dans suppression");
        var search = $tr.find('.col_marque').text(),
            position = liste_marque.indexOf(search);
        liste_marque.splice(position,1);//On enleve l'element de la liste
        console.log(liste_marque);
    }
    je retourne le jsfiddle modifi�, j'utilise la console pour d�bugguer (f12) https://jsfiddle.net/nuzo8gn2/22/

  5. #5
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2015
    Messages
    226
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par d�faut
    Merci beaucoup!

    Effectivement, comme je passe par tous les "selected", je les supprime tous. Je voulais au d�but ne r�cup�rer que l��l�ment cliqu� en passant $(this) en argument de la fonction mais je n'avais pas r�ussi (peut-�tre une erreur de syntaxe) et je n'avais pas trouv� d'info pour voir si c'est possible. Au moins maintenant je le sais et �a va surement me resservir.
    C'est vrai que l'affichage dans la console est plus pratique que les alerts qui pop><

    En tout cas, �a marche nikel, je vais essayer de le mettre en place pour l'ajout au moins �a �vitera de passer inutilement sur tous les selected avant de l'ajouter � la liste.

    Encore merci!

  6. #6
    Membre chevronn�
    Avatar de Darkaurora
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par d�faut
    Si c'est r�solu n'oublie pas de marquer le sujet comme r�solu

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

Discussions similaires

  1. R�ponses: 5
    Dernier message: 15/09/2014, 10h06
  2. R�ponses: 5
    Dernier message: 20/07/2009, 17h15
  3. R�ponses: 2
    Dernier message: 28/03/2006, 11h45
  4. Ajout et suppression dans JList
    Par Ant8386 dans le forum Composants
    R�ponses: 1
    Dernier message: 30/01/2006, 16h52
  5. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 13/08/2005, 18h50

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