Avatar billede madsmm Nybegynder
11. februar 2003 - 21:37 Der er 9 kommentarer og
1 løsning

this.className=''

Hejsa,

Jeg lavet en menu hvor jeg har i hver td:

onmouseover="on(this)" onmouseout="off(this)"

og det eneste on og off gør er sådan set at sætte this.className til en anden class fra mit css, men under IE gør dette skift meget langsomt, dvs. kører man musen hurtigt op og ned er det som om "hoverfarven" ikke kan følge med pointeren... hvordan løses dette ??

jeg kan ikke skrive fast farve i koden da der bliver benyttet forskellige stylesheets alt efter folks profil.

pft.

den kan ses på www.startout.dk
Avatar billede pelkjaer Nybegynder
11. februar 2003 - 21:43 #1
Det er et kendt problem at klasseskifts er alt for langsomme. Selv Microsoft anbefaler at undlade disse. Når du skifter en klasse skal hele siden struktur og layout genfortolkes. Derfor er det langsomt.

Du bør istedet skifte styles direkte på elementet - der er ingen omvej.
Avatar billede pelkjaer Nybegynder
11. februar 2003 - 21:51 #2
Men, prøv om ikke denne er noget hurtigere.

function skiftKlasse() {
  var a = arguments;
  for (i=0; i<a.length; i+=2) {
    if (document.getElementById) {
      if (a[i] != "none") {
        x = document.getElementById(a[i]);
        x.className = a[i+1];
      }
    }
  }
}

onmouseover="skiftKlasse('elementID','klasseover');"
onmouseout="skiftKlasse('elementID','klasseout');"
Avatar billede cms Nybegynder
11. februar 2003 - 21:58 #3
Jeg lavede dette til spm http://exp.dk/spm/315516
Du kan måske bruge noget af det:

  <script type="text/javascript">
    function setElementStyle(element, style){
      var element = event.srcElement, es = element.style, s = style;
      es.backgroundColor = s.backgroundColor;
      es.border = s.border;
      es.color = s.color;
      es.margin = s.margin;
      es.padding = s.padding;
    }

    function elementFocus(){
      var element = event.srcElement;
      setElementStyle(element, element.styleHighlighted);
    }

    function elementBlur(){
      var element = event.srcElement;
      setElementStyle(element, element.styleNormal);
    }
   
    function findRule (ruleName){
      var s = document.styleSheets(0), r = s.rules, l = r.length;
      for (var i=0; i<l; i++){
        if (r(i).selectorText == ("."+ruleName))
          return r(i);
      }
      return null;
    }

    function makeAccessibleForm (form, clsHighlighted, clsNormal){
      var styleHighlighted = findRule(clsHighlighted).style;
      var styleNormal = findRule(clsNormal).style;

      var elements = form.elements;
      for (var i=0; i<elements.length; i++){
        var element = elements[i];
        element.styleHighlighted = styleHighlighted;
        element.styleNormal = styleNormal;
        element.attachEvent("onfocus", elementFocus);
        element.attachEvent("onblur", elementBlur);
      }
    }

        function initializeDocument() {
            var form = document.getElementById("theForm");
            makeAccessibleForm (form, "highlighted", "normal");
        }
    </script>
Avatar billede madsmm Nybegynder
11. februar 2003 - 22:07 #4
tak pelkjaer det lader til at være bedre...
Avatar billede olebole Juniormester
11. februar 2003 - 22:08 #5
<ole>

pelkjaers er klart bedst, da det er noget skidt at skifte klasse ... det er alt for dårligt performende.
Derudover er hans - i modsætning til cms's - X-browser  :)

/mvh
</bole>
Avatar billede pelkjaer Nybegynder
11. februar 2003 - 22:11 #6
Men er det kun en farve du skifter koger jeg da også lidt

function skiftFarve() {
  var a = arguments;
  for (i=0; i<a.length; i+=2) {
    if (document.getElementById) {
      if (a[i] != "none") {
        x = document.getElementById(a[i]);
        x.style.backgroundColor = a[i+1];
      }
    }
  }
}

onmouseover="skiftKlasse('elementID','#eee');"
onmouseout="skiftKlasse('elementID','#cccccd');"
Avatar billede olebole Juniormester
11. februar 2003 - 22:19 #7
Ups ... jeg så zq da forkert  :oD
Jeg troede, du havde lært at holde dig langt væk fra klasse-skift, Peter }o(

Hvem sagde, klassekampen er død?  :D
Avatar billede pelkjaer Nybegynder
11. februar 2003 - 22:22 #8
Olebole - jeg ved godt du er oppe i årene - så måske jeg skulle købe dig et par briller :)

Se mit første svar *LOOL*
Avatar billede olebole Juniormester
11. februar 2003 - 22:26 #9
Havd f..... er der nu galt med en monokkel ...?!??!!!  ºo)
Avatar billede olebole Juniormester
11. februar 2003 - 22:27 #10
Jeg må vel hellere selv svare: "Så ser du kun det halve".
Jaja .... du kan sagtens gøre dig morsom på mig og min henslæbende alders bekostning  ;oD
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