25. juli 2008 - 15:17Der er
14 kommentarer og 1 løsning
odd / even klassetildeling i en tabel
Javascript er ikke min stærke side og jeg har lånt nedestående script
Scriptet tildeler hveranden række i en tabel med klasserne hhv. odd og even. Mit problem opstår hvis der eksisterer mere end en tabel på siden: tælleren fortsætter og registrerer ikke en ny tabel.
Hvorledes udvide jeg scriptet, så tælleren begynder forfra ved ny tabel?
window.onload = oddevenrows
function oddevenrows() { var tr = document.getElementsByTagName('tr'); var count = tr.length; for (var i=0;i<count;i++) { tr[i].className = (i%2) ? 'even' : 'odd'; } }
-- jeg vil abbsolut anbefale, at man afslutter statements i javascript med semikolon, men så længe der er linjeskift er det faktisk ikke nødvendigt !-)
Hvordan det fungerer lige netop i din sitation er i princippet ligemeget ... der er tale om dårlig kodestil!
Der er ikke tale om et IE fænomen, men en ganske indlysende følgevirkning af CSS' opbygning:
Ændrer man borderStyle, color og fontWeight på et elements style objekt, har det ikke indflydelse for arvehierakiet under det pågældende element.
Ændrer man derimod klassen på elementet, ændres en større eller mindre del af dokumentets arvehieraki - og det kan naturligvis have enorme styling konsekvenser for alle child elementer - og deres child elementer - osv! Ikke sjældent opgiver browseren og genberegner hele dokumentet fra top til bund.
Jo færre ting, der skal overvejes, når man skriver sin kode, jo bedre bliver resultatet - og jo hurtigere får man skrevet noget godt. Derfor handler 'god kodestil' netop om at fjerne mulige faldbruber og huller, som man falder i, hvis man ikke gør sig alle mulige og umulige overvejelser ... for den slags overser man gang på gang! God kodestil er somregel noget, man begynder at anlægge, når man har kodet et godt stykke tid og blevet dødtræt af at bruge oceaner af dyr spildtid på dumheder ;o)
Det kan godt være en skidt kode fungerer fint i ét dokument og i én situation. Du risikerer dog, den fungerer ad H...... til i en let ændret situation i overmorgen. Den slags skuffelser og irritationer mindsker man markant med 'god kodestil' =)
Jeg prøvede at udvide funktionen så tildeling af klasser kun skete på rækker, hvor tabellen havde et bestemt klassenavn, men det fejler for mig. Kan I gennemskue hvorfor?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Og det virkede så hellere ikke. Kan ikke genkende klassen
Synes godt om
Slettet bruger
03. september 2008 - 13:28#13
table er et array indeholdende tables - du skal derfor checke className på hvert element i arrayet. Equals operatoren i javascript er ==, som du rigtigt nok bruger i 10:49:25, men ikke i 11:29:58.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
kvadratrodenaf1--> Du må meget gerne svare på det andet spørgsmål
Og tusinde tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.