<snip> Jeg bliver lige nødt til at spørge her, hvad er den "rigtige" metode til at lave onmouse over på <td> eller <tr>. </snip>
og jeg svare, en TD :-) Med Somaliomar's løsning virker hans eksempel kun i nyrere browsere, men der findes heller ikke en sådan løsning til ældrer browsere, det vil ikke være muligt at kunne lave den til helt ældrer browsere alligevel!
jeg leder efter noget der virker lige så hurtigt og godt som hvis man benytter : onMouseOver="this.style.backgroundColor='#FFFFFF';" onMouseOut="this.style.backgroundColor='#f0f0f0';"
Her er en løsning, der kombinerer fordelene ved stylesheet-klasser med hastigheden ved at sætte styles direkte:
I en onload-handler gemmes property'en cssText fra alle stylesheet-klasser, der indeholder ordet "hover" i et globalt js array. I mouseover-handleren, der kaldes med element og et index, sættes elementets style.cssText = den tekst der er gemt i positionen index i det globale array.
Det eneste, man skal holde styr på, er HVOR i stylesheetet, ens hover-klasser er placeret, og at de indeholder ordet "hover" - resten giver sig selv. Man skal altså stadig kun redigere stylesheet klasser og slipper for at skulle redigere styles i alle mulige event-handlere.
----------------------------
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head>
var arrHovers = ''; //global variabel, der indeholder alle hover-klasser
function initHovers() { //finder alle regler i dokumentets stylesheet og gemmer dem i arrHovers var strTmp = ';'; var coll = document.styleSheets(0).rules; for (var i=0; i<coll.length; i++) if (coll[i].selectorText.toLowerCase().indexOf('hover') != -1) strTmp += ';' + coll[i].style.cssText; strTmp = strTmp.replace(';;',''); arrHovers = strTmp.split(';'); }
function mOver(elm,index) { // her kunne man evt. sætte runtimeStyle i stedet for style elm.style.cssText = arrHovers[index]; }
function mOut(elm) { // her kunne man evt. sætte runtimeStyle i stedet for style elm.style.cssText = ''; }
Man kan jo også bare (-men det har visse problemer, går kun over cellens indhold) td { padding : 0px } td:hover { padding : 0px; background-color:green }
Undskyld jeg ikke har delt points ud, men havde helt glemt denne her.
Og jeg har egentlig ikke fået nogen svar jeg kan bruge til noget, da de alle lider af det samme - de blir langsomme, når der er mange punkter.
men der skal da være points for forsøget!
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.