J'essaie de trier un tableau à l'aide de javascript, mais pas selon la méthode traditionnelle de tri numérique ou alphabétique. Chaque ligne du tableau comporte 3 TD. Le premier est le nom, le deuxième est un niveau (élevé, moyen, bas ou vide) et le troisième est également un niveau (élevé, moyen, bas ou vide). J'essaie de trier la table sur la base de la valeur des niveaux, élevé, moyen ou faible, et d'envoyer les TD vides vers le bas.
Je travaille normalement avec PHP et je suis donc un peu faible en ce qui concerne le javascript. Les bases de ce que j'essaie de faire :
Comptez le nombre de tr's en excluant le premier (car c'est l'en-tête). pour chaque tr, récupérez le innerHTML du second td. Comparez le innerHTML de chaque td et classez-les de haut en bas en mettant les vides en dernier. Si l'on clique à nouveau sur l'en-tête, on inverse.
Je pense que j'ai presque tout compris, mais je suis bloqué lorsqu'il s'agit de changer l'ordre des éléments.
<table id="myTable2">
<tr>
<th>Food/Beverage</th>
<th onclick="sortTable(1)">Alkalizing Level</th>
<th onclick="sortTable(2)">Acidic Level</th>
</tr>
<tr>
<td>Ale (Dark)</td>
<td></td>
<td>High</td>
</tr>
<tr>
<td>Ale (Pale)</td>
<td></td>
<td>High</td>
</tr>
<tr>
<td>Alkaline, Ionized Water</td>
<td>High</td>
<td></td>
</tr>
<tr>
<td>Almond Butter</td>
<td>Medium</td>
<td></td>
</tr>
<tr>
<td>Almond Milk (unsweetened)</td>
<td>Low</td>
<td></td>
</tr>
<tr>
<td>Almonds</td>
<td>Medium</td>
<td></td>
</tr>
<tr>
<td>Amaranth Seeds</td>
<td>Low</td>
<td></td>
</tr>
<tr>
<td>Apple Cider Vinegar</td>
<td></td>
<td>Low</td>
</tr>
<tr>
<td>Apple Juice</td>
<td></td>
<td>High</td>
</tr>
<tr>
<td>Apple Pie</td>
<td></td>
<td>High</td>
</tr>
<tr>
<td>Apples</td>
<td></td>
<td>Medium</td>
</tr>
<tr>
<td>Apricots</td>
<td></td>
<td>Medium</td>
</tr>
<tr>
<td>Apricots (Dried)</td>
<td></td>
<td>High</td>
</tr>
</table>
JS
<script>
table = document.getElementById("myTable2");
rows = table.rows;
i = 1;
count = 0;
while(i < rows.length){
alkLevel = rows[i].getElementsByTagName("TD")[1].innerHTML;
alkLevelNext = rows[i+1].getElementsByTagName("TD")[1].innerHTML;
var alkLevelPosition = 0;
i++;
if(alkLevel === "High"){
alkLevelPosition += 1;
}
if (alkLevel === "Medium"){
alkLevelPosition += 2;
}
if(alkLevel === "Low"){
alkLevelPosition += 3;
}
if(alkLevel === ""){
alkLevelPosition += 4;
}
if (alkLevelPosition > alkLevelNext) {
//shouldSwitch = true;
//break;
}
}
</script>