Avatar billede tejs Nybegynder
24. juni 2004 - 12:00 Der er 7 kommentarer og
1 løsning

Class ændring på links

Hej

Jeg har fundet dette script - kan det ændre class-værdien på alle sidens links til "inaktiv"..? Hvis ikke, hvad skal der så ændres..


function changeLinks(){
       
          var lnks = document.getElementsByTagName('A');
          for(i=0;lnks.length>i;i++){
              alert("Test");
            lnks[i].class = 'inaktiv';
            //og andre lnks[i].style.noget !-)
          }
        }
       
        </script>
Avatar billede mm12010 Nybegynder
24. juni 2004 - 12:11 #1
function changeLinks(){
    var lnks=document.getElementsByTagName('A');
    for(i=0;lnks.length>i;i++){
        alert("Test");
        lnks[i].className='inaktiv';
        //og andre lnks[i].style.noget !-)
        }
    }

men det er ikke anbefalelsværdigt at skifte class on-the-fly, det klart at fortrække hvis man kan ændres de enkelte styles...
Avatar billede tejs Nybegynder
24. juni 2004 - 12:23 #2
Hvorfor ikke..?
Avatar billede mm12010 Nybegynder
24. juni 2004 - 13:07 #3
noget med at browseren så skal til at genopbygge dokument-træet igen - havde engang et link til uddybende forklaring, men det er væk...
Avatar billede roenving Novice
24. juni 2004 - 14:56 #4
-- og det er fuldstændig rigtig som mm12010 skriver, at det absolut ikke er anbefalelsesværdigt ...

-- og forklaringen er også rigtig:

Når browseren loader et dokument opbygger den et bibliotek over de regler, der skal anvendes for at vise de enkelte elementer på siden, og skaber derefter det billede, som vises for brugeren ...

Da dette kan have et ret kompliceret udgangspunkt (css-arv m.m.m.), opgiver den på forhånd at lave smårettelser, hvis de ikke retter sig mod specifikke elementer og smider derfor hele biblioteket ud og starter helt forfra med at opbygge sidens udseende ...

Men typisk vil man også meget let kunne ændre noget uden at ændre className, f.eks.

function changeLinks(){
  var lnks=document.links;
  for(i=0;lnks.length>i;i++){
    lnks[i].style.color='#444';
    lnks[i].style.textDecoration='none';
  }
}
Avatar billede tejs Nybegynder
25. juni 2004 - 08:41 #5
>> mm12010
Hvis du vil have de 200 point, så skal du lige give et svar..
Det virker efter en lille omskrivning perfekt på min side.
Jeg tjekker bare for om className er lig aktiv og først i det tilfælde ændrer jeg det til inaktiv. På den måde sker der kun en ændring og jeg belaster ikke browseren..

function changeLinks(){
            var lnks=document.getElementsByTagName('A');
                         
            for(i=0;lnks.length>i;i++){
                if (lnks[i].className=='aktiv')
                    lnks[i].className='inaktiv';
             
            }
        }

/Tejs
Avatar billede mm12010 Nybegynder
25. juni 2004 - 09:15 #6
200 er lige rigeligt - smid oz selv svar behold nogle af dem :o)
Avatar billede tejs Nybegynder
25. juni 2004 - 10:42 #7
Narhh - jeg har nok og skulle bruge et hurtigt svar..
Avatar billede roenving Novice
27. juni 2004 - 15:30 #8
-- når du ændrer eet eneste className smides hele biblioteket ud ...

I de fleste tilfælde vil det næppe genere nogen, da browseren jo ikke bruger mange sekunder på at genopbygge hele træet, medmindre man har en meget omfattende og/eller kompliceret struktur ...

-- brug den type løsning jeg angav, så du ikke ved et tilfælde får dig selv vænnet til at bruge spaghetti-kode, når en ordentlig kode ingen kræfter koster !-)
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