@ProgElecT +1 (je n'avais pas vu )
1- Le plus malin serait déjà de mettre des attributs value aux <option>.
De préférence, numériques (c'est toujours plus facile à traiter) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <div id="liste">
<select onchange="affichage_images();" id="mois">
<option value="99"> tous</option> <!-- Toute l'année -->
<option value="1"> janv</option>
<option value="2"> fev</option>
<option value="3"> mar</option>
<option value="4"> avr</option>
<option value="5"> mai</option>
<option value="6"> juin</option>
<option value="7"> juil</option>
<option value="8"> aout</option>
<option value="9"> sept</option>
<option value="10"> oct</option>
<option value="11"> nov</option>
<option value="12"> dec</option>
</select>
<select onchange="affichage_images();" id="annee">
<option value="2017">2017</option>
<option value="2018">2018</option>
</select>
</div> |
2- Ensuite, au lieu des classes, il est là aussi plus malin d'utiliser des attributs data-* (Utiliser les attributs de données).
On obtient alors:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <div id="affichage">
<img src="images/AttributionCodeConfidentiel.png" data-annee="2017" data-mois="99"/>
<img src="images/AttributionCodeConfidentiel_201706.png" data-annee="2017" data-mois="6"/>
<img src="images/AttributionCodeConfidentiel_201707.png" data-annee="2017" data-mois="7"/>
<img src="images/AttributionCodeConfidentiel_201708.png" data-annee="2017" data-mois="8"/>
<img src="images/AttributionCodeConfidentiel_201709.png" data-annee="2017" data-mois="9"/>
<img src="images/AttributionCodeConfidentiel_201710.png" data-annee="2017" data-mois="10"/>
<img src="images/AttributionCodeConfidentiel_201711.png" data-annee="2017" data-mois="11"/>
<img src="images/AttributionCodeConfidentiel_201712.png" data-annee="2017" data-mois="12"/>
<img src="images/AttributionCodeConfidentiel.png" data-annee="2018" data-mois="99"/>
<img src="images/AttributionCodeConfidentiel_201801.png" data-annee="2018" data-mois="1"/>
<img src="images/AttributionCodeConfidentiel_201802.png" data-annee="2018" data-mois="2"/>
<img src="images/AttributionCodeConfidentiel_201803.png" data-annee="2018" data-mois="3"/>
<img src="images/AttributionCodeConfidentiel_201804.png" data-annee="2018" data-mois="4"/>
<img src="images/AttributionCodeConfidentiel_201805.png" data-annee="2018" data-mois="5"/>
<img src="images/AttributionCodeConfidentiel_201806.png" data-annee="2018" data-mois="6"/>
<img src="images/AttributionCodeConfidentiel_201807.png" data-annee="2018" data-mois="7"/>
<img src="images/AttributionCodeConfidentiel_201808.png" data-annee="2018" data-mois="8"/>
</div> |
3- Enfin, l'affichage/masquage se gère très bien en JavaScript.
N.B. jQuery EST du JavaScript.
Seule la syntaxe change (elle est plus simple en jQuery, mais nécessite de charger la librairie).
4- Il ne te reste plus qu'à écrire la fonction affichage_images() :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function affichage_images()
{
var val_mois = Number(document.getElementById('mois').value);
var val_annee = Number(document.getElementById('annee').value);
var images = document.querySelectorAll('#affichage img');
images.forEach( function(image){
if( (val_mois == 99 && image.dataset.annee == val_annee)
|| (val_mois != 99 && image.dataset.mois == val_mois && image.dataset.annee == val_annee )
){
image.style.display = 'block';
} else {
image.style.display = 'none';
}
});
} |
On peut masquer en CSS toutes les images au chargement de la page :
#affichage img { display:none; }
Si des valeurs sont déjà sélectionnée dans les listes déroulantes (par exemple "2017"), il faut activer la fonction au chargement de la page (onload) :
1 2 3
| window.onload = function(){
affichage_images();
} |
Partager