.... og hvad angår formen, så kan du jo også bruge 'actTR' og 'oldCol' :) Det er vigtigt, at du sætter inline-style på hver række. Ellers kan du ikke aflæse den og sætte 'oldCol'
well. det er så meget "arbejde" at det nok formelt set er bedst at lave en funktion til det. med så megen javascript inde i selve html koden bliver det meget hurtigt uoverskueligt og tidsrøvende at vedligeholde.
1) style.background har flere omkostninger end style.backgroundColor 2) document.all har flere omkostninger end document.getElementById/document.getElementByTagName (du skal igennem hele dokumentet med document.all)
=maddog= Jeg har lige prøvet det med getElementById, men det tager stadig lige lang tid. Der er 1096 elementer i mit dokument, det kan vel ikke passe at det skal tage mere end et kvart sekund at løbe det igennem og ændre farve !!?? eller hvad ?
Hehe .... det er jo næsten samme funktion, jeg har skrevet. Den tager bare længere tid :o)
function initTBL() { var aTR = gA( gE("minTBL"), "TR" ); for (i=0; i<aTR.length; i++) { aTR[i].style.backgroundColor = "#dedede"; aTR[i].onclick = function() { setTR(this); } } }
gA() og gE() er blot mine standard-wrappers, jeg bruger for ikke at skulle skrive så meget. Der står i virkeligheden:
function initTBL() { var tbl = document.getElementById("minTBL"); var aTR = tbl.getElementsByTagName("TR"); for (i=0; i<aTR.length; i++) { aTR[i].style.backgroundColor = "#dedede"; aTR[i].onclick = function() { setTR(this); } } }
Det burde gå hurtigere, da der ikke (unødigt) spørges, om elementet i TR-array'et er en TR. Til gengæld bliver det naturligvis sløvet en anelse, da den også lægger den fornødne onclick-handler på TR'en. Lægges den dog ikke på her, skal man til gengæld skrive den ud 1096 gange, hvilket bliver betydelig langsommere at få ned gennem 'hullet i himlen' :)
Om der står #ffffff eller #dedede er nok ikke et problem at rette i :) /mvh
document.getElementById og document.getElementByTagName er recursive funktioner der gennembladrer documentet og er derfor principielt set altid at foretrække for den iterative document.all når man har et valg. Forskellen skulle (i teorien i hvert fald) være særligt mærkbar med meget "dybe" dokumenter hvor tags ligger nestet i mange lag. ByTagName har den fordel at den ved en eneste gennemgang ligger alle fundne elementer ned i en hukommelses-mæssigt meget effektiv Collection uden nogen grund til at indexere ind i den komplekse HTML struktur igen.
Netop ... derfor bruger jeg den :) Som du ser bladrer min ikke enggang hele TR-strukturen igennem - kun den pågældende tabels TR-struktur. Det går endnu hurtigere ;o)
Jeg så dog forkert med hensyn til if'en. Der har du helt ret ... en id må under ingen omstændigheder findes i flere rækker. Man kan give den class="tr" og så (med min funktion incl. wrappers) skrive:
function initTBL() { var aTR = gA( gE("minTBL"), "TR" ); for (i=0; i<aTR.length; i++) { if (aTR[i].className=="tr") { aTR[i].style.backgroundColor = "#dedede"; aTR[i].onclick = function() { setTR(this); } } } }
/mvh
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.