JSFiddle - React, Tailwind, and code Playground
by Flavors
HTML
<div id="tableau">
<table>
<thead>
<tr class="en_tete">
<th>Marque</th>
<th>Modele</th>
<th>Couleur</th>
<th>Nb Options</th>
</tr>
</thead>
<tbody>
<TR data-tr="ligne_1">
<TD class="col_marque" rowSpan="2">citroen</TD>
<TD rowSpan="2">picasso</TD>
<TD>blanc</TD>
<TD>2</TD>
</TR>
<TR data-tr="ligne_1">
<TD>bleue</TD>
<TD>18</TD>
</TR>
<TR data-tr="ligne_2">
<TD class="col_marque" rowSpan="2">peugeot</TD>
<TD rowSpan="2">208</TD>
<TD>rouge</TD>
<TD>2</TD>
</TR>
<TR data-tr="ligne_2">
<TD>grise</TD>
<TD>5</TD>
</TR>
<TR data-tr="ligne_3">
<TD class="col_marque" rowSpan="2">porsche</TD>
<TD rowSpan="2">boxer </TD>
<TD>blanche</TD>
<TD>2</TD>
</TR>
<TR data-tr="ligne_3">
<TD>noire</TD>
<TD>10</TD>
</TR>
<TR data-tr="ligne_4">
<TD class="col_marque" rowSpan="3">renault</TD>
<TD rowSpan="3">laguna</TD>
<TD>rouge</TD>
<TD>10</TD>
</TR>
...
CSS
html, body
{
height:100%;
}
table
{
margin-top:40px;
margin-left:20px;
text-align:center;
border-collapse:collapse;
}
td, th
{
padding:3px;
border: 1px solid black;
empty-cells:hide;
}
label
{
display: block;
width: 150px;
float: left;
}
tbody, checkbox
{
cursor:pointer;
}
.selected
{
background-color:#e9f8ff;
}
JavaScript
var $marques = $('.marques');
var liste_marque = [];
alert("liste marque = "+liste_marque);
//Fonction JS pour selectionner les lignes
$('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();
$trList.removeClass('selected');
}
else
{
$trList.addClass('selected');
Ajout_Liste()
}
liste_marque.length ? $marques.text(liste_marque.join(', ')) : $marques.text('');
});
//Fonction JS pour Mettre à jour la liste des elements selectionnes
function Ajout_Liste()
{ alert("Entrée dans ajout");
$('.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'ajoute");
liste_marque.push(id);
}
});
}
function Suppr_Liste()
{ alert("Entrée dans suppression");
$('.selected').each(function()
{
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
}
});
}