Avatar billede lestrata Nybegynder
16. november 2001 - 16:54 Der er 12 kommentarer og
2 løsninger

Reference til CSS class

Er der nogen der ved hvordan man referer til en CSS class, for at ændre eks. borderen på alle de layers der er medlem af den class?

Jeg ved godt at man kan gøre det ved at referere til layernes id og bruge et for() loop, men det er jeg ikke intresseret i, da det er for langsomt til mange layers.


<html>
<head>
<script>

function changeMyLayers(){

    /* Har prøvet nedstående:
        myLayerClass.style.border = \"3px solid #000000\";
        document.styleSheets[0].cssRules[0].style.border = \"3px solid #000000\";
        document.styleSheets[0].myLayerClass.style.border = \"3px solid #000000\";
    */
}

</script>
<style type=\"text/css\">
.myLayerClass {  background-color: #0033CC; width:50px; height:50px; border: 1px solid #000000}
</style>
</head>

<body>
<div id=\"Layer1\" style=\"position:absolute; left:50px;  top:50px;\" class=\"myLayerClass\"></div>
<div id=\"Layer2\" style=\"position:absolute; left:100px; top:100px;\" class=\"myLayerClass\"></div>
<div id=\"Layer3\" style=\"position:absolute; left:150px; top:50px;\" class=\"myLayerClass\"></div>
<div id=\"Layer4\" style=\"position:absolute; left:200px; top:100px;\" class=\"myLayerClass\"></div>
<div id=\"Layer5\" style=\"position:absolute; left:250px; top:50px;\" class=\"myLayerClass\"></div>
<div id=\"Layer6\" style=\"position:absolute; left:300px; top:100px;\" class=\"myLayerClass\"></div>
<input type=\"button\" onclick=\"changeMyLayers()\" value=\"Klik mig!\" style=\"position:absolute; top:200; left:150;\">
</body>
</html>
Avatar billede sukos Juniormester
16. november 2001 - 17:03 #1
<div class=\"myLayerClass\">
Avatar billede sukos Juniormester
16. november 2001 - 17:04 #2
<div id=\"blabla\" style=\"blabla\">
<span class=\"myLayerClass\">hfjhkjfhskjfh</span>
</div>

Du skal bare IKKE blande css-koderne! Altså to \"position\" o.s.v.
Avatar billede sukos Juniormester
16. november 2001 - 17:06 #3
Ups, du kan heller ikke bruge både en \"ID\" og en \"CLASS\" på en gang!!!!!!!!!!!!
Totalt ukorrekt HTML!
Avatar billede sukos Juniormester
16. november 2001 - 17:08 #4
Ikke prøvet, men måske:
<span class=\"myLayerClass\">
<div style=\"blabla\">

</div>
<div style=\"blabla\">

</div>
<div style=\"blabla\">

</div>
</span>

?????
Avatar billede nikolajdu Nybegynder
16. november 2001 - 17:21 #5
I stedet for at tilføje noget ti en class, så skift class i stedet eller nøjes med at ændre baggrunden.

antalLayers = 6

for (i=1;i<antalLayers+1;i++){

eval(\"document.getElementById(\'Layer\"+i+\"\').className=\'nyKlasse\';\");
    }
}
Avatar billede nikolajdu Nybegynder
16. november 2001 - 17:21 #6
Eller baggrundsskift.

function changeMyLayers(){

antalLayers = 6

for (i=1;i<antalLayers+1;i++){

eval(\"document.getElementById(\'Layer\"+i+\"\').style.backgroundColor=\'#ff33CC\';\");
    }
}
Avatar billede lestrata Nybegynder
16. november 2001 - 18:39 #8
Sukos 1.) ?
Sukos 2.) ??  Jeg har ikke blandet 2 positioner..
Sukos 3.) ??? Hvorfor er det \"Totalt ukorrekt HTML!\" ???
Sukos 4.) Prøv lige at læs mit spørgsmål igen, jeg spørger om hvordan man i JavaScript referere til de styles der er i en class, og ikke hvordan man laver layers.
Spurgt på en anden måde, hvor ligger en class\'s properties i Document Object Model(DOM)?

nikolajdu: Jeg kan ikke bruge dine forslag da der der vil være op imod 100 layers der skal have ændre pixelWidth og pixelLeft på engang, og det skal altsammen ske ved mousemove event. Så det vil blive alt for langsomt med et loop.

olebole: Jeg tror heller ikke jeg kan bruge addRule/removeRule for hvis du ligger mærke til det i eksempel der bliver givet på: http://msdn.microsoft.com/workshop/samples/author/dhtml/refs/removeRule.htm

Så bruger de oEffectRules.innerHTML=oEffectRules.innerHTML; før at addRule/removeRule ændringen tager effekt og bliver vist på skærmen.

Der må da være en eller anden måde man kan refferer direkte til en properti i en class og ændre den....
Avatar billede sukos Juniormester
16. november 2001 - 19:34 #9
\"men det er jeg ikke intresseret i, da det er for langsomt til mange layers\"

Findes der noget hurtigere end css?????????

Det du spørger om er åbenbart et serverside script?
Avatar billede sukos Juniormester
16. november 2001 - 19:35 #10
CSS har ingen variabler!
Avatar billede lestrata Nybegynder
16. november 2001 - 20:59 #11
Tro mig hvis man laver et for() loop der skal referer til omkring 100 layers og både ændre deres brede og position for hver gang musen rykker 1 pixel, så går der _pænt_ langsomt.

Derfor skal jeg finde ud af hvordan man ændre de properties der er defineret i en CSS class via JavaScript men det kan jeg kun hvis jeg kender et stylesheets+properties position i Document Object Model.

Og nej det har intet med serverside scripting at gøre.
Avatar billede lestrata Nybegynder
16. november 2001 - 21:19 #12
Så har jeg fundet ud af hvordan man gør:

<html>
<head>
<script>

function changeMyLayers(){

    document.styleSheets[0].rules[0].style.border = \"3px solid #000000\";
}

</script>
<style type=\"text/css\">
.myLayerClass {  background-color: #0033CC; width:50px; height:50px; border: 1px solid #000000}
</style>
</head>

<body>
<div id=\"Layer1\" style=\"position:absolute; left:50px;  top:50px;\" class=\"myLayerClass\"></div>
<div id=\"Layer2\" style=\"position:absolute; left:100px; top:100px;\" class=\"myLayerClass\"></div>
<div id=\"Layer3\" style=\"position:absolute; left:150px; top:50px;\" class=\"myLayerClass\"></div>
<div id=\"Layer4\" style=\"position:absolute; left:200px; top:100px;\" class=\"myLayerClass\"></div>
<div id=\"Layer5\" style=\"position:absolute; left:250px; top:50px;\" class=\"myLayerClass\"></div>
<div id=\"Layer6\" style=\"position:absolute; left:300px; top:100px;\" class=\"myLayerClass\"></div>
<input type=\"button\" onclick=\"changeMyLayers()\" value=\"Klik mig!\" style=\"position:absolute; top:200; left:150;\">
</body>
</html>
Avatar billede nikolajdu Nybegynder
16. november 2001 - 21:23 #13
Du er sååååå dygtig.
Avatar billede lestrata Nybegynder
16. november 2001 - 23:01 #14
Takker
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Energy Trading Project Manager – Consulting

Cognizant Technology Solutions Denmark ApS

Sr. Test Analyst

MAN Energy Solutions

LTSA 4-Stroke Technical Advisor