Avatar billede soerenlyn Nybegynder
19. juni 2007 - 22:31 Der er 15 kommentarer og
1 løsning

hente css-margin med js

Hej Eksperter.

Jeg definere en margin-left med css, og denne vil jeg godt hente med javscript. Jeg tænkte at koden skulle være:

object.style.marginLeft;

Men dette returnerer ingenting.
Er der nogen der kan svare på hvordan jeg så går?
Avatar billede webudvikleren Nybegynder
19. juni 2007 - 22:34 #1
Hvad definér du med css? Har du f.eks
<style type="text/css">
.noget her
{
  margin-left: ??;
}
</style>

eller er det et "style" på en attribute? F.eks "<div style="margin-left:0px;">..</div>" ?
Avatar billede roenving Novice
19. juni 2007 - 22:38 #2
Bruger du andet end en direkte style-attribut på elementet tilhører propertyen ikke elementet men css-reglen, og så har du ingen jordisk chance for at hente værdien cross-browser !-)
Avatar billede soerenlyn Nybegynder
19. juni 2007 - 22:42 #3
Min CSS:
.sl {
  margin-left:10px;
  background:url('images/132.gif') top left no-repeat;
  padding-left:20px;
}

roenving:
Så det vil sige at hvis det er en class kan jeg ikke hente, men godt hvis det er id?
Avatar billede webudvikleren Nybegynder
19. juni 2007 - 22:51 #4
<script type="text/javascript">
window.onload = function()
{
    for(i=0;i<document.getElementsByTagName('div').length;i++)
    {
          if ( document.getElementsByTagName('div')[i].className == "sl")
          {
                alert(document.getElementsByTagName('div')[i].style.marginLeft);
          }
    }
     
};
</script>
Avatar billede roenving Novice
19. juni 2007 - 22:53 #5
Du kan kun hente værdien fra css-reglen, og det er der kun få browsere, der understøtter, og så bliver det med langsom traversering af alle css-regler i et stylesheet, et no-go ,-(
Avatar billede webudvikleren Nybegynder
19. juni 2007 - 22:55 #6
Ville anbefale dig at benytte dig af
<div class="sl" style="margin-left:10px;">
Og ved flere...
<div class="sl" style="margin-left:40px;">

For at kunne fange værdien.

Derefter kan du benytte funktionen

<script type="text/javascript">
window.onload = function()
{
    for(i=0;i<document.getElementsByTagName('div').length;i++)
    {
          if ( document.getElementsByTagName('div')[i].className == "sl")
          {
                alert( "Class-name på følgende div (" + i + ") har margin-left:\n
                      " + document.getElementsByTagName('div')[i].style.marginLeft + "
                );
          }
    }
   
};
</script>
Avatar billede webudvikleren Nybegynder
19. juni 2007 - 23:01 #7
Måske, for at være mere præcis:
document.getElementsByTagName('div')[i].style.getAttribute('style','marginLeft');
Avatar billede soerenlyn Nybegynder
19. juni 2007 - 23:03 #8
Hmm ... jeg synes bare det virker som en lalle-løsning, når man alligevel angiver en class, så at angive style også.
Men hvis man ikke kan requeste class så er der jo ikke så meget at gøre :)
Avatar billede webudvikleren Nybegynder
19. juni 2007 - 23:03 #9
Hov, se lige bort fra det sidste svar. Det var mig som faldt i spinaten!!
Avatar billede soerenlyn Nybegynder
19. juni 2007 - 23:15 #10
Men jeg mener da jeg har kunnet hente fra css hvis jeg har angivet det med id i css'en. Altås #noget ... i stedet for class .noget ...

Så burde man også kunne hente class synes jeg.
Avatar billede roenving Novice
19. juni 2007 - 23:17 #11
Jeg skal selvfølgelig have taget mig sammen til at teste de mest gængse browsere, for hvilke muligheder, der er for at aflæse stylesheets, for det har jeg sidste gjort i 2005, hvor kun IE gav mulighed for at aflæse et stylesheet, ingen andre browsere understøttede en direkte traversering af alle style-rules ...

Men under alle omstændigheder, så tilhører  ropertyen altså style-reglen og ikke elementet, så det kan blive en ret træls opgave at finde den slags værdier frem !-)
Avatar billede roenving Novice
19. juni 2007 - 23:18 #12
... propertyen ...
Avatar billede soerenlyn Nybegynder
20. juni 2007 - 12:57 #13
Okay ... Hvem skal have point?
I sagde jo næsten det samme :)
Avatar billede soerenlyn Nybegynder
01. august 2007 - 23:44 #14
Nogen der vil have point eller skal jeg lukke?
Avatar billede roenving Novice
06. august 2007 - 15:46 #15
Oki '-)
Avatar billede roenving Novice
08. august 2007 - 17:29 #16
-- og tak for point ;~}
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