Mam taki skrypt:
<!DOCTYPE html>
<html>
<title>Sort a HTML List Alphabetically</title>
<body>
<p>Click the button to sort the list alphabetically:</p>
<button onclick="sortList()">Sort</button>
<ul id="id01" >
<li>Oslo</li>
<li>Stockholm</li>
<li>Helsinki</li>
<li>Berlin</li>
<li>Rome</li>
<li>Madrid</li>
<li><h4>O</h4></li>
<li><h4>S</h4></li>
<li><h4>H</h4></li>
<li><h4>B</h4></li>
<li><h4>R</h4></li>
<li><h4>M</h4></li>
</ul>
<script>
function sortList() {
var list, i, switching, b, shouldSwitch;
list = document.getElementById("id01");
switching = true;
/* Make a loop that will continue until
no switching has been done: */
while (switching) {
// start by saying: no switching is done:
switching = false;
b = list.getElementsByTagName("LI");
// Loop through all list-items:
for (i = 0; i < (b.length - 1); i++) {
// start by saying there should be no switching:
shouldSwitch = false;
/* check if the next item should
switch place with the current item: */
if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
/* if next item is alphabetically
lower than current item, mark as a switch
and break the loop: */
shouldSwitch = true;
break;
}
}
if (shouldSwitch) {
/* If a switch has been marked, make the switch
and mark the switch as done: */
b[i].parentNode.insertBefore(b[i + 1], b[i]);
switching = true;
}
}
}
</script>
</body>
</html>
https://codepen.io/rudolph-reti/pen/vYEJKEK (źródło: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_sort_list)
1) Co zrobić, żeby elementy ze znacznikami <h4> sortowały się równoprawnie razem z pozostałymi elementami? Chodzi mi o taki efekt:
- O
- Oslo
- S
- Stockholm
itd.
2) Co zrobić, żeby skrypt sortował poprawnie polskie i niemieckie znaki diakrytyczne?
Tutaj jest inne rozwiązanie: https://codepen.io/rudolph-reti/pen/dyPzXER (źródło: https://www.geeksforgeeks.org/how-to-sort-a-list-alphabetically-using-jquery/)
Tam jest problem tylko z polskimi i niemieckimi znakami. Elementy z dodatkowymi znacznikami w liście sortowane są poprawnie.