Avatar billede alaflam Nybegynder
08. november 2005 - 09:59 Der er 14 kommentarer og
2 løsninger

getattribute style virker ikke?

style kode:
#login
{
    visibility:hidden;
    background-color:#FF0000;
    color:#FFFFFF;
}

javascript kode:
alert(document.getElementById("login").style.color));
alert(document.login.style.getAttribute("color", "false"));
document.login.style.setAttribute("color", "blue", "false")

html kode
<div id="login">blah</div>

jeg kan ikke rigtige få fat i style cheets eller ændre det ???
Er der noget specialt man skal lave ?
Avatar billede elskermad.dk Nybegynder
08. november 2005 - 10:54 #1
jeg har ingen ide om det, men måske man skal tage getAttributen direkte på document.login også tage "style.color" ?
Avatar billede gringostar Nybegynder
08. november 2005 - 12:24 #2
Du har i hvert fald en fejl i din kode, tror måske det er den der ødelægger det for dig.

Den skal se sådan ud:
alert(document.getElementById("login").style.color);

Mvh. Niels
Avatar billede roenving Novice
08. november 2005 - 12:55 #3
Men du kan aldrig finde værdier sat i et stylesheet via elementet, der er du nødt til at gå ind i stylesheetet og finde reglen via selektoren osv. osv.

-- desværre virker det absolut ikke tilforladeligt, hvis det skal være nogenlunde xbrowser, for f.eks. Opera returnerer bare et næsten tomt objekt, hvis man adresserer document.styleSheets[0] eller via .getElementById ...

-- værdier på elementer kan aflæses, hvis man har sat dem i en style-attribut på selve elementet eller har sat det via javascript !-)

-- men hvad er formålet, for ofte skal man bare anskue udfordringen en anden vej, f.eks. gør jeg altid sådan med vis/skjul-kode:

var st = document.getElementById('minDiv').style;
st.display = st.display != 'block' ? 'block' : 'none';

-- så vil den blive vist selvom display er sat til 'none' i stylesheetet !o]
Avatar billede alaflam Nybegynder
08. november 2005 - 13:48 #4
elskermad.dk, jeg forstår ikke hvad du mener
gringostar, det virkede ikke
roenving, din løsning hjælp ikke

    var st = document.getElementById('login').style;
    alert(st.color);
Avatar billede roenving Novice
08. november 2005 - 13:52 #5
-- nej, det er jo det, jeg skriver ...

-- du kan _ikke_ aflæse en style-property på elementet, hvis den ikke er sat direkte på det !-)

-- derfor spørger jeg dig også, hvad du skal bruge det til, for så må vi jo finde andre veje !o]
Avatar billede alaflam Nybegynder
08. november 2005 - 18:24 #6
fik den til at virke :)

jeg havde en anden div som hed login som ødelagde det for mig :)
Avatar billede olebole Juniormester
09. november 2005 - 09:53 #7
<ole>

Det er nok også meget godt at være klar i mælet og undgå at sammenblande begreberne  ;o)

Et elements style-objekt er ikke som sådan en attribut på elementet og kan derfor ikke hentes med ELEMENT.getAttribute - eller sættes med ELEMENT.setAttribute  :)

/mvh
</bole>
Avatar billede alaflam Nybegynder
09. november 2005 - 11:49 #8
jeg siger mange tak til jer alle sammen :)

roenving, du må gerne kaste et svar.

olebole, Et elements style-objekt er ikke som sådan en attribut på elementet ? den fik jeg ikke rigtige fat i... :(
Avatar billede olebole Juniormester
09. november 2005 - 12:12 #9
Bruger man DOM, skal attributter sættes med 'setAttribute' metoden - og aflæses med 'getAttribute'.

    if (ELEMENT.id=="Rudolf") ELEMENT.className = "rensdyr";

- er gammel, ustandardiseret HTML-DOM. Med standardiserede ECMA-DOM bindinger, ser det sådan ud:

    if (ELEMENT.getAttribute("id")=="Rudolf") ELEMENT.setAttribute("className", "rensdyr");

Dog gælder dette ikke style-objektet på et element. Du skal stadig bruge:
    if (ELEMENT.style.background=="blue") ELEMENT.style.background = "red";

Style-objektet på et element skal med andre ord ikke behandles som en alm. markup-attribute - men som en decideret property på 'element-objektet'.

'getAttribute' er som sagt ikke en del af JavaScript, men en binding mellem forskellige scriptsprog (som bygger på ECMA-standarden) og DOM - og bruges til aflæse attributter på (X)HTML-elementer. Den bruges f.eks. også, hvis du i IE vælger at bruge VBScript.

'color' er ikke en attribut på et (X)HTML-element, men en property på et (X)HTML-elements style-objekt - og kan derfor ikke aflæses med 'getAttribute'.

Derfor virker ingen af de to alerts herunder (i browsere, der overholder standarderne):

<div id="gnu" style="color:red">&nbsp;</div>

<script type="text/JavaScript">
  var foo = document.getElementById("gnu");
  alert(foo.getAttribute("style").color);
  alert(foo.style.getAttribute("color"));
</script>

Håber, det hjalp lidt  :)
Avatar billede roenving Novice
10. november 2005 - 10:25 #10
Oki '-)
Avatar billede alaflam Nybegynder
14. november 2005 - 12:59 #11
olebole, du må gerne kaste et svar...du er en stor haj til javascript :)
Avatar billede olebole Juniormester
14. november 2005 - 18:01 #12
Oki, too  ;o)
Avatar billede alaflam Nybegynder
16. november 2005 - 09:32 #13
jeg siger mange tak :)

jeg må lige kaste mig på en Javascript bog :)
Avatar billede roenving Novice
16. november 2005 - 12:31 #14
-- og jeg takker for point ;~}
Avatar billede olebole Juniormester
16. november 2005 - 13:17 #15
- tak for tanken  ;o)
Avatar billede roenving Novice
16. november 2005 - 13:28 #16
*lol*

-- jeg var da overbevist om, at du havde fået også, men det var jo så gringostar, der havde fået en andel ...
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