Den fungerer som den skal, men kunne godt tænkes mig at få den udvidet til at tage endnu en attribute i betragtning, nemlig 'fokus'.
Hvis fokus-attributten er 1 skal den være over alle andre med 0 også selvom den slutter før (den skal også være over alle andre 1'ere hvis de slutter efter)
Hvordan får jeg sådan en dobbelt sortering lavet?
Jeg bruger sorteringsfunktionen således:
function sorter() { placering = document.getElementById('auktioner'); divs = new Array();
Da sorteringsfunktioner er noget, der ofte kører i 'lange ringe', har jeg tilladt mig at optimere dine funktioner en anelse. Jeg er kommet til følgende:
function sorterefterslut(a, b) { var aF = a.getAttribute('fokus'), bF = b.getAttribute('fokus'), aS = a.getAttribute('slut'), bS = b.getAttribute('slut');
function sorter() { var placering = document.getElementById('auktioner'), divs = new Array(), i = 0;
while (placering.firstChild) { divs[i++] = placering.firstChild; placering.removeChild(placering.firstChild); }
divs.sort(sorterefterslut);
for (var i=0,j=divs.length; i<j; i++) { placering.appendChild(divs[i]); } }
- men jeg ser meget gerne, hvis roenving lige tjekker rigtigheden af koden i sorterefterslut-funktionen. Det er den slags situationer, hvor man (Læs: jeg) let kommer til at overse en enkelt tilstand ;o)
-- i en sorteringsfunktion skal der vel returneres 1, hvis a skal sorteres før b, altså er det hvis aF er 1 og bF er 0, at der ubetinget skal returneres dette 1-tal ...
Tilfælde:
aF == 1 og bF == 0 -- returnér 1 (i mit eksempel forkortet til aF > bF !-) aF == bF && aS > bS -- returnér 1 aF == bF && aS == bS -- returnér 0
-- ellers er aF < bF eller aF == bF samtidig med at aS < bS, så -1 skal returneres !o]
Dooohhhh ... naturligvis skal første linje hedde: if ( (aF=="1"&&bF=="0") || ((aF==bF) && aS>bS)) return 1;
Tak, for rettelsen =)
En lille 'flueting' er så, at f.eks. aF ikke er 1 eller 0, men derimod "1" eller "0" (getAttribute returnerer altid en streng - uanset, hvordan attributten er skrevet i markup'en). Det betyder dog intet i denne situation ... derfor 'flueting' ;o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.