Avatar billede meyer Nybegynder
17. juni 2008 - 14:46 Der er 57 kommentarer og
1 løsning

Hover på en hel celle <td>

Kan jeg lave en mouseover hover effekt på en HEL celle ikke bare på tekstlinket også selvom td bredde og højde er forskellig?

hvis ja hvordan gør jeg så? :-)

F.eks:
<td>
min tekst<br>
kommer her
</td>
Avatar billede Slettet bruger
17. juni 2008 - 14:49 #1
hvis det skal virke i IE bliver du nok nødt til at anvende javascript, i FF kan man bare sætte :hover på cellen, men det understøtter IE ikke.
Avatar billede meyer Nybegynder
17. juni 2008 - 14:50 #2
Har du et forslag i javascript?
Avatar billede jokkejensen Novice
17. juni 2008 - 15:03 #3
søg på csshover.htc så kan ie6 også.

Ellers er det vare

.HighLight
{
background-color: white;
color: black;
}

td.HighLight:hover
{
cursor: pointer;
background-color: black;
color: white;
}
Avatar billede jokkejensen Novice
17. juni 2008 - 15:04 #4
vare = bare
Avatar billede w13 Novice
17. juni 2008 - 15:05 #5
Med JavaScript er det bare:

<td onmouseover="background-color:black;color:white" onmouseout="background-color:white;color:black">
min tekst<br>
kommer her
</td>
Avatar billede meyer Nybegynder
17. juni 2008 - 15:09 #6
w13>> Der sker ikke rigtigt noget
Avatar billede w13 Novice
17. juni 2008 - 15:23 #7
Sorry, jeg sover i timen:

<td onmouseover="this.style.backgroundColor='black';this.style.color='white'" onmouseout="this.style.backgroundColor='white';this.style.color='black'">
min tekst<br>
kommer her
</td>
Avatar billede meyer Nybegynder
17. juni 2008 - 15:35 #8
det er bare perfekt :-)

Kan man flette et link ind i det javascript? det ser ud til at den æder mit link på teksten i feltet...
Avatar billede meyer Nybegynder
17. juni 2008 - 15:37 #9
Den åd ikke linket - mig der overså noget ;-)
Avatar billede meyer Nybegynder
17. juni 2008 - 15:39 #10
det ville være godt hvis hele cellen kunne være et link
Avatar billede meyer Nybegynder
17. juni 2008 - 16:10 #11
Jeg klarede den med denne her:

    <script type="text/javascript">               
        function goLocation(link) {
  document.location.href=link;
}
</script>

onmouseover="this.style.backgroundColor='#7EADBB';this.style.color='#c1d8de'" onmouseout="this.style.backgroundColor='#c1d8de';this.style.color='#c1d8de'" onclick="goLocation('default.asp?kalenderID=<%=kalenderID%>')"

Så den er hjemme.. med mindre du har noget bedre ;-)

Tusind tak for hjælpen - smid lige et svar :-)
Avatar billede w13 Novice
17. juni 2008 - 16:14 #12
Den er fin. =)
Avatar billede notes2c Nybegynder
17. juni 2008 - 18:38 #13
FYI:
Faktisk så har IE7 implementeret :hover funktionen på andre elementer end et a tag.

Så der faktisk ikke grund til at bruge JavaScript, med mindre det også skal virke i ældre versioner af IE, og hvis det er tilfældet, ville jeg anvendet csshover.htc som jokkejensen foreslår.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Untitled</title>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
a {
display: block;
width: 100%;
}
td {
width: 100px;
background: silver;
text-align:center;
}
td.red:hover {
background: red;
}
td.yellow:hover {
background: yellow;
}
td.green:hover {
background: green;
}
-->
</style>
</head>

<body>
<table>
<tr><td class="red"><a href="#">red</a></td><td class="yellow"><a href="#">yellow</a></td><td class="green"><a href="#">green</a></td></tr>
</table>
</body>
</html>
Avatar billede w13 Novice
17. juni 2008 - 19:21 #14
Ja, det kan godt komme til at virke i de fleste browsere med CSS. Men det er jo smag
og behag.

Personligt foretrækker jeg at bruge CSS til layout og JavaScript til funktionalitet, sådan som det er tænkt.
Avatar billede notes2c Nybegynder
18. juni 2008 - 10:53 #15
Nu er kategorien jo CSS, så det var mit udgangspunkt. Og om det ønskede er layout eller funktionalitet er vel et smp om hvordan man ser det. Efter min mening er der ikke meget funktionalitet i en hover effekt. Og efter min mening er det layout. Og mit indspark var bare tænkt som en FYI
Avatar billede olebole Juniormester
18. juni 2008 - 16:39 #16
<ole>

Der har været megen debat internt i W3C om emnet. Der er næppe tvivl om, at layout er og alle dage har været en statisk ting - og at hover er en funktionalitet - men af historiske årsager har man (desværre) valgt at lade hover forblive i CSS

/mvh
</bole>
Avatar billede notes2c Nybegynder
19. juni 2008 - 12:16 #17
Ja, det kommer jo altid an på med hvilke briller man kigger. Men glad for input'et...
Avatar billede Slettet bruger
19. juni 2008 - 12:24 #18
olebole >> hvad så med f.eks. farveskift via a:hover, havde du hellere set at dette skulle styres med javascript?
Avatar billede jokkejensen Novice
22. juni 2008 - 18:20 #19
ja det er netop det de siger.

psuedo klasserne er bare til leg. De har i hvert fald intet formål når det kan løses med JS, altså med tunnelbrillerne på, en funktion.

En ting ved jeg, JS er ikke tænkt som noget inline crap man kaster på sit markup, det skal ligge externt i en JS fil. Og her tænker jeg, hvorfor skrive en helvedes masse JS for at ramme tags'ene og give dem deres event's frem for at løse det gennem CSS.

Den her løsning:

onmouseover="this.style.backgroundColor='#7EADBB';this.style.color='#c1d8de'" onmouseout="this.style.backgroundColor='#c1d8de';this.style.color='#c1d8de'" onclick="goLocation('default.asp?kalenderID=<%=kalenderID%>')"

er jo bare noget uskalerbart, pc browser markup uidentificerbart af SECrawlers. og validerer sikker fint op mod w3c, men er bestemt ikke tanken !

Vh.
Avatar billede jokkejensen Novice
22. juni 2008 - 18:23 #20
Og at have en scriptfil der kun skal indeholde "behavior" laget, hvordan kan I så argumentere for at smide "design" laget der ind i ?

/JJ
Avatar billede jokkejensen Novice
22. juni 2008 - 18:32 #21
Desuden er det også mere performance venligt at skifte className frem for at give dem en style.

Ved godt olebole ikke vil give mig ret, det er før diskuteret, men http://www.quirksmode.org/dom/classchange.html fortæller hvis alt..

Så skal han have en JS løsning må det helt korrekte være at tildele onmouseover og onmouseout dynamisk gennem en JS fil, hvor man giver dem nye klasse navne.

Ellers bruge psuedo klassen :hover.

Jeg ved godt hvad der er hurtigst.

Vh
Avatar billede olebole Juniormester
23. juni 2008 - 16:07 #22
jokkejensen >> quirksmode er herostratisk berømt for at lave én enkelt test - for derefter at konkludere på dén. Ja, den test siger en hel masse ... om forfatteren - og de, der ukritisk mener at, 'den siger alt'.

Den slags 'test' burde ingen tage alvorligt. Det er jo ren Erasmus Montanus: "En sten kan ikke flyve. Mor Karen kan ikke flyve ... ergo: Mor Karen er en sten!"  ;D
Eller, hvad med den pige jeg engang kendte? Hun gik til lægen og fik p-piller. Samme dag faldt hun og brækkede benet. Ville du derudaf konkludere, at p-piller udgør en reel fare med hensyn til benbrud?

Roenving og jeg har før klasket den pågældende 'test' langt opad væggen med alternative, mere realistiske test - hvor det på en stor side tog op til flere sekunder at rendere siden ved klasseskift.

I mine øjne adskiller du dig ikke fra fundamentalistsik religiøse, når du gang på gang ukritisk kaster dig på maven for forfatteren bag quirksmode - uagtet, at hans påstande tilbagevises den ene gang efter den anden.

Det undrer mig dybt at se mennesker på den måde lader sig forføre af en eller anden tilfældig skribent på WWW. Det er mig en gåde, at man i 2008 ikke har lært, at enhver påstand (specielt, når de bygger på et _så_ spinkelt grundlag) er komplet værdiløs, til den er testet i forskellige sammenhænge og under forskellige forhold. Hvordan kan man dog være så uvidende?

Vi har før diskuteret quirksmodes latterlige påstande om innerHTML's performance. De bygger ligeledes på én enkelt test, hvor han - komplet urealistisk - nøjes med at indsætte ét enkelt tegn i et par tusinde elementer. Absolut uvidenskabelig og helt uden værdi.
At andre så laver mere realistiske og omfattende test ( f.eks: http://www.dengodekode.dk/artikler/DOM/no_innerhtml.php ), kan ikke rykke din én gang fastlåste tro!

"Jeg ved godt hvad der er hurtigst."

Nej, du ved ikke en dyt - men du tror en masse  ;o)
Avatar billede olebole Juniormester
23. juni 2008 - 16:14 #23
- og lad mig lige opsummere: Der er i W3C rimelig koncensus om, at hover ikke hører hjemme i CSS, men at denne funktionalitet burde klares med script. Diskussionen har primært gået på, om man skulle fjerne den eller ej. Af historiske årsager har man valgt at lade den blive. Det er med andre ord ikke kun mig, du er uenig med. Din opfattelse er i direkte modstrid med størstedelen af W3C's  =)
Avatar billede jokkejensen Novice
24. juni 2008 - 13:49 #24
Lad mig se dig og roenvings test. (kom lige med noget denne gang)

Du propper os jo også bare med din viden (hvad du tror), ingen dokumentation og tør ikke vise nogen reference til en løsning du har lavet?. Altså bare endnu en WWW gut, der ikke bare forsøger af forføre, men direkte diktere hvordan ting skal være..

Og lad være med at sige at:

onmouseover="this.style.backgroundColor='#7EADBB';this.style.color='#c1d8de'" onmouseout="this.style.backgroundColor='#c1d8de';this.style.color='#c1d8de'" onclick="goLocation('default.asp?kalenderID=<%=kalenderID%>')"

er den korrekte løsning. Det er dirkte forkert. Her ser man en blanding af HTML, CSS og JS. Argumenter for den.

/JJ
Avatar billede jokkejensen Novice
24. juni 2008 - 13:55 #25
tager jeg fejl, eller har du selv skrevet den artikel du linker til ?

http://www.dengodekode.dk/artikler/DOM/no_innerhtml.php

I givet fald så er du da noget af det mest narcisitiske, bedrevidende individ jeg er stødt på. At svine en anden nok noget mere anerkendt forfatter til, og der efter refere til en artikel med faktum skrevet af dig selv...

Ligegyldigt om du har skrevet den eller ej, så er den ikke særlig objecttiv, når der indledes med "Læseren vil ikke være i tvivl om, jeg selv er modstander af innerHTML".

Hvad mon konklusionen på sådan en artikel vil ende ?

Langt ude....
Avatar billede jokkejensen Novice
24. juni 2008 - 14:14 #26
Lol den test der er derinde, laver 5 elementer(p, strong, div, span, em), og resten er en helvedes masse tekst.. Prøv at fjerne dde 2.36MB tekst og se hvad testen siger.

Latterligt scenarie de har opsat inde på dengodekode, det kan umuligt være din test.
Avatar billede w13 Novice
24. juni 2008 - 14:15 #27
Jokkejensen>> JavaScript er bygget til at manipulere HTML og CSS, så der er ikke noget forkert i:

onmouseover="this.style.backgroundColor='#7EADBB';this.style.color='#c1d8de'" onmouseout="this.style.backgroundColor='#c1d8de';this.style.color='#c1d8de'" onclick="goLocation('default.asp?kalenderID=<%=kalenderID%>')"

Det gør netop det, det er beregnet til.
Avatar billede jokkejensen Novice
24. juni 2008 - 16:21 #28
ja, men det er forkert opbygget.

Det gør som forventet ja, men det er noget værre fuck at præsentere i sin markup fil.

Det kan ingen benægte !

/J
Avatar billede jokkejensen Novice
24. juni 2008 - 16:24 #29
og lad venligst være med at lære mig om javascript w13, jeg ved godt hvad javascript er. Samtidigt glemmer jeg ikke din kommentar med at fejlhåndtering klares af DOM.. totalt usammenhængende.

"Det undrer mig dybt at se mennesker på den måde lader sig forføre af en eller anden tilfældig skribent på WWW."

Den skal du måske tage lidt til dig også, og lade være med at tale olebole efter munden.

/J
Avatar billede olebole Juniormester
24. juni 2008 - 16:25 #30
jokkejensen >> Om det er min test - og dermed f.eks. GMail - som er latterlig eller det evt. skulle være dig, der er det, vil jeg af hensyn til Ekspertens regler om god tone afholde mig fra at udtale mig om.
Ikke desto mindre passer min test udmærket med, hvad der loades af data i applikationer som f.eks. GMail og tusindvis af corporate webapplikationer rundt om på WWW.

De utallige gange du og et par andre brugere har diskuteret denne slags emner med mig, har det for Jer udelukkende drejet sig om min person - aldrig om koden. Oven i købet i sådan en grad, at en af de andre brugere (montago) i en tidligere tråd blankt erkendte, at det var min person, som var problemet ... intet andet! Talking about 'narcissisme' ...!!!

Jeg sviner ikke nogen somhelst forfatter til - det skal man være mere end primitiv for at få ud af mine skriverier. Jeg forholder mig kritisk til forfatterens helt fejlagtige påstande. Undskyld, men sådan gør begavede mennesker ofte i stedet for at kaste sig ukritisk på maven for udtalelser, man end ikke har gidet at investere tid i at tjekke rigtigheden af. Men jeg har jo før måtte erkende, at du ikke evner at kende forskel på at diskutere en person - og så på at diskutere hans arbejde.

Hvad påstandende om skift af CSS-klasse angår, så behøver man end ikke tjekke noget somhelst.
Hvis man har forstået de mest grundlæggende principper bag CSS, står det lysende klart, at klasseskift naturligvis performer væsentligt dårligere i rigtig mange tilfælde ... det burde faktisk slet ikke være nødvendigt at teste noget. Det er vel derfor, MS i mange år har advaret mod klassskifts dårlige performance - og i stedet råder til skift af de enkelte style properties.
Men de er vel også bare nogle 'narcissistiske, bedrevidende individer', som kun er ude på at 'svine en anerkendt forfatter' til. Tag dig dog sammen!

Nu har du tydeligvis ikke erfaring med at skrive artikler, så lad mig fortælle dig lidt om processen: Jeg ved, det kommer som et chok for dig, men normalt ønsker en forfatter at skrive om noget, han ved noget om og har undersøgt.
Derfor ved han også ret præcist, hvordan artiklens begyndelse og slutning skal være. Vidste han ikke det, ville det være en umulighed at fremstille problemerne på en bare nogenlunde pædagogisk måde. Hvis han ikke vidste, hvad han skulle skrive, ville han formodentlig aldrig komme igang - for han ville så naturligvis ikke kende til behovet for den pågældende artikel. Det må vist siges at være 'højtlæsning for pygmæer'  ;o)

Det har intet med manglende objektivitet at gøre ... tværtimod! Det har noget med overblik og troværdighed at gøre.

At du finder det mere troværdigt og objektivt, at en forfatter skulle kaste sig ud i at skrive noget, han ikke ved noget om, giver indtryk af en person, der ikke tænker sig ret meget om, før han farer i tastaturet!

Naturligvis kendte jeg konklussionen, inden jeg skrev artiklen. Jeg havde selvfølgelig foretaget alle test i forvejen ... ellers havde jeg for pokker da ikke vidst, der var noget at skrive om! Hvad i alverden havde du dog forestillet dig?

Dine seneste kommentarer viser, hvor desparat du er. Hvad i w13's kode, der er 'forkert opbygget', ved enhver med forstand på webkode, du ikke kan gøre rede for. Der er _intet_ forkert i koden. At du på den mest infantile vis er nødt til at understrege dine vrøvlerier med bandeord, understreger blot din ynkelige desparation!
Avatar billede jokkejensen Novice
24. juni 2008 - 16:27 #31
og det er forresten bestemt ikke "bygget" til at manipulere HTML og CSS.. Det har en lidt anden historie, og DOM er blot en del af det.
Avatar billede olebole Juniormester
24. juni 2008 - 16:31 #32
JavaScript - eller rettere LiveScript - blev udviklet af Netscape. Sproget blev lanceret i Netscape 2.0 med det nye navn JavaScript - og til at manipulere HTML-elementer med. Hvis du kender en anden historie, er jeg meget interesseret i at høre den - og det er der vist tusindvis af andre, der også er  =)
Avatar billede w13 Novice
24. juni 2008 - 16:31 #33
Jokkejensen>> Agree to disagree! :)
Avatar billede meyer Nybegynder
24. juni 2008 - 16:39 #34
Øhh vil bare lige sige at jeg er vildt glad for w13 løsning på mit problem - det kører da bare som det skal ;-)
Avatar billede w13 Novice
24. juni 2008 - 16:40 #35
;) Det er da det, det gør!
Avatar billede olebole Juniormester
24. juni 2008 - 16:40 #36
meyer >> præcis!  ;o)
Avatar billede w13 Novice
24. juni 2008 - 16:41 #37
jokkejensen>> Hvis du ligger inde med et link til min kommentar om at "fejlhåndtering klares af DOM", vil jeg da meget gerne lige se det.
Avatar billede jokkejensen Novice
24. juni 2008 - 16:43 #38
Olebole >> find noget objecttivt data på dine kommentater ellers kan jeg ikke bruge dem til noget. Du laver jo ikke andet end at tale uden om emnet.

"er udelukkende drejet sig om min person - aldrig om koden" -> netop nu drejer det her sig om koden, så se lige væk fra dig selv et øjeblik.

Vi kan godt bringe den ned på et mere personligt plan.

Men se lige hvad jeg har fundet fra en der er super go til at skrive artikler:

Derfor foreslog W3C (som bl.a. består af de væsentlige browser leverandører) at opdele WWW kode i følgende bestanddele:
1. data
2. markup (elementer til adskillelse af data med henblik på visning)
3. visuel strukturering (styling af markup)
4. funktion (scripting på data og elmenter/styling)

Kilde : http://www.eksperten.dk/artikler/537

Det er jo netop hvad I ikke gør.. I blander det hele sammen til en stor uskalerbar løsning.

Som åbenbart nu er den flotteste løsning. Jeg er lost...

/JJ
Avatar billede olebole Juniormester
24. juni 2008 - 16:44 #39
I øvrigt lidt sjove betragtninger:

*) Når w13 giver mig ret, taler han mig efter munden.
*) Når jeg imødegår en forfatters påstande, er jeg narcissistisk og bedrevidende i mit forsøg på at svine ham til.

You're damned if you do ... n' you're damned if you don't!  :D
Avatar billede olebole Juniormester
24. juni 2008 - 16:45 #40
"Jeg er lost..." >> I know!
Avatar billede jokkejensen Novice
24. juni 2008 - 16:46 #41
Hej w13.

Der findes en service på Internettet, (et sted hvor man kan se hjemmesider) der hedder google.com, her kan man søge efter sider på Internettet. Fordi der er så mange sider gør det uoverskueligt at skulle kigge alle sider på Internetttet igennem.

http://www.google.com/search?hl=en&q=site%3Aeksperten.dk+DOM+w13+jokkejensen

3 hit.

Hvis du har svært ved at finde rundt i windows, kan du bare klikke her:

http://www.eksperten.dk/spm/830609

/JJ
Avatar billede olebole Juniormester
24. juni 2008 - 16:47 #42
jokkejensen >> Skal vi ikke mon bare være enige om følgende:

1) Du anser mig for narcissistisk, bedrevidende og ude på at svine folk til

2) Jeg anser dig for ubegavet, infantil og uvidende

- og lad os så lade den ligge dér!  =)
Avatar billede w13 Novice
24. juni 2008 - 16:58 #43
Jokkejensen>> Tak for dit Internet-link. Jeg må kigge lidt på denne Google-service.

Svært ved at finde rundt i Windows? Så du giver mig et link til vores DOM-debat?? Sammenhæng?

Men jeg lover da aldrig mere at joke om DOM, når jeg glemmer ting i mine koder! ;)

Nu skrev jeg jo før Olebole herinde, så jeg snakker ham vel før munden, eller hvad?
Avatar billede mclemens Nybegynder
24. juni 2008 - 17:18 #44
Mon ikke man skulle teste om tingene virker i de browsere, det skal virke
i og om hastigheden på den ene eller den anden måde virker hurtigst, og
så vælge det mest effektive til det valgte scenarie ? Lidt ligesom når
vi anbefaler brug af table istedet for div i tilfælde, hvor det er det
mest gunstige element til opbygningen ...

Selv har jeg aldrig været meget for brug af f.eks. eval(), men ved en
lille test herinde*, viste det sig mest effektivt (i det scenarie efter min
holdning). Derfor kan det andet godt være bedre uden eval i et modsat scenarie ...
* ( http://www.eksperten.dk/spm/832817#rid7125770 )

Derfor vil jeg da gerne stå ved at selvom innerhtml eller klasse skifte
ikke lige er min kop te heller (som eval()), så skal jeg da lade
det være usagt at det ikke performer bedre i visse tilfælde.

M.h.t. at putte scriptkoder i html dokumentet undgår jeg helst selv
dette på min egen side, men ved kodning på eksperten gør jeg det som
w13 til tider, da det til dels ikke altid er synligt hvordan man kan
hæfte det til elementer via handlers og da det måske i nogle tilfælde
virker mere uhåndterbart end med inline event handlers for nogle brugere.

Mon ikke man hellere skulle klandre browsere for at inkludere
kodningsmåder istedet for at klandre brug af disse kodningsmåder ?
Avatar billede notes2c Nybegynder
24. juni 2008 - 17:26 #45
Hej... Jeg tror aldrig vi opnår enighed her... Hvem som har ret er jo et spm om religion... Tror ikke vi når meget tættere på hinanden, sådan lige med det første. Faktum er at "meyer" er glad for for løsningen.
Jeg har før deltaget i diskutioner på dette forum, og det er sjældent der er komme noget godt ud af det. Og bryder mig faktisk ikke om de verbale angreb. Jeg er sikker på at hjælpen her på e, er givet du fra de beste intentioner. Og løsningen vælges af spørgeren, ud fra hvad der passer ham/hende bedst.
Vi kan være enige eller uenige, men som vi ser, findes der mange veje til målet. Jeg må bare selv konstatere, at selv om jeg godt vil holde mig til teorierne er det bare ikke altid praktisk muligt, af forskellige grunde som man ikke selv er herre over. Og vælger derfor den nemme workaround.
Over and out.
Avatar billede olebole Juniormester
24. juni 2008 - 17:30 #46
mclemens >> pas på, hvad du roder dig ud i. Den vej har jeg også været nede af, men det ændrer ikke på holdningerne fra 'visse' brugere  :o|

Jeg er derudover helt enig i, at man bør teste for performance. Det er faktisk lige netop dét, jeg slår på tromme for: Tro ikke på, hvad du læser på WWW ... test selv! Det gælder da naturligvis også, hvad jeg skriver i mine artikler: test det selv!

Hele essensen i det, jeg skriver, er jo netop, at quirksmode's forfatter gør sig skyldig i dybt uvidenskabelig folkeforførelse. Han tester ét - meget lidt sandsynligt - scenarium og konkluderer herpå, hvordan virkeligheden ser ud i ethvert andet tilfælde.
Den fremgangsmåde er jo netop af den slags, som ender op i at stemple P-piller som farlige med hensyn til brækkede ben (jvnf. kommentaren 23/06-2008 16:07:40)  ;o)

Svine forfatteren til? Arhhhhhh ... næppe!
Avatar billede olebole Juniormester
24. juni 2008 - 17:45 #47
mclemens >> Hvad dit eval eksempel angår, så har jeg endnu ikke testet det. Hvad der er interessant i lige netop dét eksempel er dog ikke så meget performance i betydningen 'afviklings hastighed'. Når det gælder event handlers på HTML elementer (JavaScript og DOM), er det memory leaks i IE, der er det helt store issue. De er nemlig ekstremt lette at konstruere - bl.a. ved cirkulære referencer og closures  :o|

Man kunne såmænd også argumentere for, at hele innerHTML-kontra-DOM debatten i forbindelse med Ajax er temmelig uinteressant, når det i forvejen tager fra fire-fem gange til tusindvis af gange længere tid at udskrive HTML på serveren, end det gør at udskrive JSON (alt efter metoderne).
Da performance er et langt større problem på en travl og altid overbebyrdet server,  end på brugerens maskine, der strutter af ubrugt RAM og CPU kraft, er det indlysende at bruge JSON eller XML.
Da JSON og XML samtidig arbejder fabelagtig godt sammen med DOM, er valget uhyre let at træffe  =)
Avatar billede mclemens Nybegynder
24. juni 2008 - 18:10 #48
Tjoh tildels fremgår det af artiklen hos quirkmode, at testen viser at det er hurtigere med innerHTML - jeg kan så give dig ret i at der ikke samtidig er inkluderet en test, der viser at det er langsommere ved større indhold, der indsættes (evt. flere gange for at få en hastighedsmåling).

Din konklusion er jo også rigtig "innerHTML ikke nødvendigvis er hurtigere end DOM - nogen gange tværtimod" - den samme sætning kan afhængig af scenario vendes om og være ligeså korrekt (som også vist af dit første eksempel).

Jeg tror aldrig tilfælde to ville blive relevant for mig - i sådan et tilfælde
ville jeg næsten føle at en side opdatering (sideskifte) ville være at foretrække.

Som Jokke føler jeg nok også at du lægger vægt på at innerHTML'en ikke duer,
selvom dit eget første eksempel er bevis herfor - det samme kan måske være
gældende for andre der vælger innerHTML'en. Jeg føler med andre ord at konklusionen
er at "innerHTML er langsommere eller hurtigere end DOM - afhængig af hvilket indhold der skal indsættes". At jeg så nok selv ville foretrække* DOM er så en anden ting ...
(*forudsat selvfølgelig at innerHTML ikke viste sig at være sekunder hurtigere ...)
Avatar billede olebole Juniormester
24. juni 2008 - 18:29 #49
Så må jeg forklare mig dårligt, eller også misforstår du noget  =)

Performance tvisten er i virkeligheden den mindst interessante - men sært nok den eneste, folk diskuterer.

Jeg forsøger jo netop at vise med hele to eksempler, at innerHTML er en rigtig skidt ting, fordi den overskriver det fragment, den bruges på. Herved slettes programmatisk satte event handlers og andre referencer til og fra fragmentet - ligesom formfelter mister deres brugerændrede indhold, samt radios og checkbox'e deres checked-værdier.

Samtidig har innerHTML aldig været valid i nogen standard og bliver det heller aldrig. Den strider lodret mod hele webkodens væsen ... hele idéen med, hvordan HTML dokumentet og dets elementer i følge W3C bør opfattes og bearbejdes.

Hvorfor overhovedet bekymre sig om valid kode, hvis man alligevel bruger innerHTML? Hvormange procent invaliditet skal jeg acceptere? Hvilke former for invaliditet skal jeg acceptere og i hvilket omfang? Kan invalide properties og metoder ligefrem være værd at hylde i varme vendinger? Ikke i min verden!

Artiklen har for såvidt to formål:

1) At vise, at innerHTML af mange grunde er en skidt ting at bruge
2) At vise, at man ikke skal tro på, hvad der står på nettet - eller nogen somhelst andre steder - men teste og undersøge selv
Avatar billede olebole Juniormester
24. juni 2008 - 18:45 #50
"Tjoh tildels fremgår det af artiklen hos quirkmode, at testen viser at det er hurtigere med innerHTML" >> Tildels ...?!??!!! Hvad med:

Discussion
The most obvious conclusion of these tests is that innerHTML is faster than "real" W3C DOM methods in all browsers. The W3C DOM table methods are slow to very slow, especially in Explorer.

- og resten af, hvad han skriver, baserer sig på ét eksempel, hvor han indsætter ét tegn i hvert element! Han konkluderer helt klart og tydeligt udfra et specialtilfælde, som jeg end ikke kan komme på nogen praktisk brug af. Ubrugeligt og ligegyldigt vrøvleri!

Jeg kan da godt læsse en VW 1300 med otte småfede mennesker og lade den hoste sig op gennem passene i Østrig. Udfra sådan en tur kan der ikke drages den 'indlysende konklussion', at en VW 1300 generelt kører fire kilometer på en liter benzin. Gjorde jeg det, ville jeg fylde folk med vås!

Med kun mig bag rattet, ned ad bakke og i medvind, ser tingene helt anderledes ud. Hvis jeg vil tale om VW 1300's generelle benzinøkonomi og tages alvorlig, må jeg lave nogle mere alsidige undersøgelser  ;o)

Bemærk: Han taler om en 'indlysende konklussion'! Indlysende ...?!??!!!
Avatar billede mclemens Nybegynder
24. juni 2008 - 18:49 #51
Ja, såfremt sletningen af de påsatte handlers m.v. har betydning
skal man have det med i ens overvejelser når man vælger metode.

(Og at innerHTML ikke er fra w3c bør også indgå som du
nævner - men den er selvfølgelig stadig valid i nogle
browsere selvom den ikke er en del af standarderne).
Avatar billede olebole Juniormester
24. juni 2008 - 18:57 #52
Med forlov: Det er noget vrøvl!  =)

W3C afgør hvilke DOM properties, der er valide. At visse invalide properties virker i nogle browsere, gør absolut ikke disse properties valide på nogen somhelst måde.
Al mulig skodkode virker i forskellige browsere. Det gør på ingen måde skodkode valid  ;o)
Avatar billede mclemens Nybegynder
24. juni 2008 - 18:57 #53
Hans konklusion er ikke forkert for testen han har foretaget,
men at han ikke teste yderligere er så en fejl. Derfor vises det
også kun tildels at det er hurtigere (da den anden test mangler).

8 småfede på tur i Østrig - hmm, mon ikke der ville mangle plads
til fastfood når man kører forbi drivein hos Burger King ... :-/
Avatar billede olebole Juniormester
24. juni 2008 - 19:13 #54
Nej, hans konklusion er rablende forkert! Han skriver jo netop, at det er indlysende, at innerHTML er hurtigere end DOM i alle browsere - og at det bevises af hans test.

Han skriver _netop_ ikke, at det _kun_ gælder i nogle specielle tilfælde - f.eks. hans test. Og bemærk venligts, at han end ikke nævner 'den anden test' ... han konkluderer helt generelt:

"Den mest indlysende konklusion af disse test er, at innerHTML er hurtigere end 'rigtig' W3C DOM i alle browsere".

Nej, det er noget vrøvl! Der skulle i det aller mindste stå:

"Den mest indlysende konklusion af disse test er, at innerHTML i denne ene situation er hurtigere end 'rigtig' W3C DOM i alle browsere".

Der er en verden til forskel! Og så ville det jo også have klædt ham at oplyse, at scenariet udelukkende er af akademisk interesse.

Hvornår er det lige, at én enkel test er blevet taget til indtægt for noget somhelst. Én test er ingen test! Det står i begyndelsen af linje to i forordet til Håndbog i videnskabelig metode  ;o)
Avatar billede olebole Juniormester
24. juni 2008 - 19:18 #55
- og hele problemet er jo, at så ekstremt mange mennesker har læst hans artikel og - med ham - konkluderer, at innerHTML generelt og altid er hurtigere DOM i alle browsere.

Gid alle andre dog læste det, som du gør - omend jeg er dybt uenig i din udlægning  =)
Avatar billede mclemens Nybegynder
24. juni 2008 - 19:34 #56
24/06-2008 19:13:08 - > Jamen vi er skam ikke uenige på det punkt Ole,
jeg synes bare at han tildels har ret i, at det er hurtigere i det tilfælde
han har stablet på benene. Vi er også enige i at det ikke er det mest reele
billede af brugen på innerHTML og at resultatet derfor kun tildels er sandt.

... Min udlægning er måske for blød og jeg burde nok forholde mig til at hans
manglende analyse af problemets omfang og effektivitet af metoderne i et mere
naturligt miljø viser noget om hans mangel på subjektivitet og det er jo også
sandt - enten er det tilfældet eller også er han blot uvidende om denne fejl.

Hvis det er nogen trøst, så læste jeg ikke artiklen før jeg klikkede på dit link :)
Avatar billede mclemens Nybegynder
24. juni 2008 - 19:41 #57
(retur til emnet)
Hvis hover'en og linket skulle lægges ud eksternt kunne man rode med noget i stil med

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
table {background:red;width:100%;}
td {background-color:#c1d8de;color:#00d8de;}
</style>

<script type="text/javascript">
function ael(elm,evt,f){
  if(elm.addEventListener)elm.addEventListener(evt, function(){eval(f)}, false);
  else if(elm.attachEvent)elm.attachEvent("on"+evt, function(){eval(f)});
}


var links=["http://eksperten.dk","http://jubii.dk"];
ael(window,"load","wload();");

function wload(){

  tmp=1;while(elm=document.getElementById("link"+tmp++)){
    elm.style.cursor="pointer";
    ael(elm,"mouseover","overlink(elm,0);");
    ael(elm,"mouseout","overlink(elm,1);");
    ael(elm,"click","document.location.href='"+links[tmp-2]+"';");
  }
}

function overlink(elm,t){
  elm.style.backgroundColor=t?'#c1d8de':'#7EADBB';
  elm.style.color=t?'#00d8de':'#c1d8de';
}
</script>
</head><body>

<table><tr><td id="link1">Link</td></tr><tr><td><a href="noget2.html">Link</a></td></tr><tr><td id="link2">Link</td></tr></table>
</body></html>

- Men man får dog kun flyttet js'en væk fra html'en. CSS og JS
er dog stadig blandet sammen (ikke at jeg føler det gør noget).

Spørgsmålet er dog om det reelt er bedre end at have det inline
- det er nok en ting man må beslutte med sig selv i sidste ende.
Avatar billede olebole Juniormester
24. juni 2008 - 20:50 #58
Der er vist ingen udover jokkejensen, der er imod event handlers i markup'en. Opdelingen gælder - ganske som jokkejensen så lyrisk citterede i et af sine mere desparate indlæg (24/06-2008 16:43:40) - selve funktionaliteten ... ikke de håndtag, der udløser den.

Event handlers i markup'en er da også en integreret del af XML Events, som kommer til at erstatte den nuværende event model, når vi for alvor overgår til XHTML. Her får vi sågar et decideret listener-element - så heller ikke hos W3C ser det ud til, at jokkes udlægning af kodens opdeling deles  =)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester