Avatar billede nogen_nogen Nybegynder
01. februar 2004 - 12:01 Der er 14 kommentarer og
1 løsning

Læsning af eksterne stylesheet i javascript

Jeg har følgende i mit eksterne stylesheet:

#navn{
background:red;
}

i html-dokumentet har jeg:

<p id="navn">En eller anden tekst</p>

Nu vil jeg gerne kunne ændre farven på "navn". Hvordan gør jeg det?
Avatar billede nute Nybegynder
01. februar 2004 - 12:08 #1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <style>
    #navn{
        background:red;
    }
    </style>   
    <script language="JavaScript" type="text/javascript">
    <!--
    function changeColor()
    {
        var objDiv = document.getElementById( 'navn' );
        objDiv.style.backgroundColor = 'blue';
    }
    //-->
    </script>
</head>

<body>
<p id="navn">En eller anden tekst</p><br>
<input type="button" value="skift farve" onclick="changeColor()">
</body>
</html>

/nute
Avatar billede pelkjaer Nybegynder
01. februar 2004 - 12:16 #2
Et andet eks:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="test.css" rel="stylesheet" type="text/css">
</head>
<body>
<p id="test">Jeg bliver sort ved tryk p&aring; &quot;Edit&quot; </p>
<p id="test2">Jeg bliver gr&oslash;n ved tryk p&aring; &quot;Edit&quot;</p>
<p><a href="java script:;" onClick="document.styleSheets[0].rules[0].style.color='black';document.styleSheets[0].rules[1].style.color='green'">Edit</a></p>
</body>
</html>
Avatar billede pelkjaer Nybegynder
01. februar 2004 - 12:17 #3
Og i test.css har vi så:

#test {
    color: #FF0000;
}
#test2 {
    color: #0000FF;
}
Avatar billede nute Nybegynder
01. februar 2004 - 12:20 #4
pelkjaer >> dette vil være en rimelig "tung" løsning. ved ændring af stylesheetet (på denne måde), så skal hele CSS DOM-træ genberegnes.

/nute
Avatar billede pelkjaer Nybegynder
01. februar 2004 - 12:23 #5
Det er jeg helt klar over, synes blot at eksemplet var nærværende i henhold til spørgsmål :)
Avatar billede nute Nybegynder
01. februar 2004 - 12:25 #6
pelkjaer >> næh ... jeg kigget lidt skævt på dit eksempel. det er helt klart et ok forslag du har kommet med. browser fabrikanter anbefaler at man kun ændrer de(n) property som skal være anderledes - og det er jo dét du har gjordt. Det er hvis man fx. ændrer class på et element det ville være en tung løsning

/nute
Avatar billede pelkjaer Nybegynder
01. februar 2004 - 12:31 #7
Ja så langt er vi helt enige, men jeg er ikke sikker på at det er en "lovlig" løsning, i og med at vi skal "ned" i stylesheet for at ændre en enkelt property.
Avatar billede nute Nybegynder
01. februar 2004 - 12:34 #8
det har du ret i ... :-)
Avatar billede nogen_nogen Nybegynder
01. februar 2004 - 16:30 #9
Din løsning virker lige godt i Explorer som Netscape. Den løsning pelkjaer har virker også, men den rejser flere spørgsmål end svar. For hvis jeg har mange styles i mit styleeheet, så er det lidt svært at vide om det er nummer 1,2 eller 117 man skal angive.
Avatar billede nogen_nogen Nybegynder
01. februar 2004 - 16:35 #10
Svaret fra nute er accepteret fordi det virker i både explorer og netscape. peljkaers svar er ikke accepteret, fordi jeg ikke får svar på, hvordan jeg når en specifik "id". Har jeg et meget omfattende stylesheet bliver det meget uoverskuelig at skulle huske rækkefølgen.
Avatar billede nute Nybegynder
01. februar 2004 - 16:39 #11
nogen_nogen >> det kan lade sig gøre, selv om det er en lang omvej at tage fat på. kig lidt på (mit første svar):

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

og se om du ikke kan hente noget inspiration. Det er muligt at tilgå navngivne styles, men som sagt ... det er lidt bøvlet.

/nute

PS! tak for points :-)
Avatar billede roenving Novice
02. februar 2004 - 08:05 #12
>>nute

-- hvorfor skal DOM-træet genberegnes ved ændring af een attribut i eet element ?-)

-- siden skal gen-renderes, men træet ?o]
Avatar billede nute Nybegynder
02. februar 2004 - 12:32 #13
roenving >> me @ 01/02-2004 12:25:47 ... jeg trækket min kommentar tilbage:

"pelkjaer >> næh ... jeg kigget lidt skævt på dit eksempel. det er helt klart et ok forslag du har kommet med. browser fabrikanter anbefaler at man kun ændrer de(n) property som skal være anderledes - og det er jo dét du har gjordt. Det er hvis man fx. ændrer class på et element det ville være en tung løsning"

- "siden skal gen-renderes, men træet ?" ... det er jo ikke en birk der er tale om ;-) side = DOM træ, ergo: træet skal genberegnes :-)

Dessuden, min ven ... jeg har snuppet oplysningene fra din posting:
http://www.eksperten.dk/spm/459487 @ 31/01-2004 19:34:20 :-) Enten så er dette et trickspørgsmål, eller så har du kort hukommelse ;-) ;-)

/nute
Avatar billede roenving Novice
03. februar 2004 - 16:29 #14
-- kan være, jeg kunne have udtrykt mig klarere i 459487, men der er topic jo også ændring af class, så jeg har ikke tænkt på kryds-læsning overfor et spørgsmål om ændring af en property på en class ...

Men for at skære det helt ud i pap:

-- Ændrer du class på eet element genberegner browseren hele css DOM-træet (jeg vil tro, at programmørerne har tænkt, at livet er for kort til at kontrollere, om det medfører ændringer i nesting mv., og har valgt bare at genberegne !-)

Skal du ændre en eller få properties på enkelt-elementer er det altså dumt at ændre class jvf. ovenstående ...

At ændre een property i een class vil medføre, at samtlige elementer med denne class skal have ændret deres style, men det har ingen konsekvenser for DOM-træet, selvom nesting kan betyde, at det er rigtig mange elementer, som skal have ændret denne property !o]
Avatar billede nute Nybegynder
03. februar 2004 - 16:39 #15
jo, vi er jo enige, men "pap-flader" er altid godt at "kigge på" ;o]

Det var jo sådan set dette jeg ville prøve at sige, men jeg må indrømme at min "hvordan fungerer egentlig renderingen af forkellige dimser i en browser"-viden ikke er helt på højde med danmarks højeste "fjeld" (når en nordmand - næmlig mig - har mulighed til at gøre nar af "fjeld" i danmark, så skal det også gøres ;o] ). Sund fornuft, en vis ballast når det gælder god kodeskik og en vis indsigt i hvad der vil være hårdt for en browser at arbejde med er nok mine våben i kampen for at lave god kvalitet. Formulering af de tekniske finurligheder lader jeg andre om, specielt når de har kompetence nok til det

:o}
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