Avatar billede koldstar Nybegynder
15. februar 2007 - 16:29 Der er 11 kommentarer og
1 løsning

div.style.toString()

Hey

Jeg har brug for at kunne hente style ud som en lang tekst-steng. Jeg har forsøgt med div.style.toString(), men jeg får returneret et objekt ligemeget hvad jeg gøre... Er der nogen der har et forslag??
Avatar billede jokkejensen Novice
15. februar 2007 - 16:43 #1
Nej det kan du ikke..

Hvorfor vil du det ?
Avatar billede Slettet bruger
15. februar 2007 - 16:55 #2
Prøv med: div.getAttribute("style")
Avatar billede koldstar Nybegynder
15. februar 2007 - 16:55 #3
Jeg vil gemme det der står i style i min database. Er der en anden måde?
Avatar billede koldstar Nybegynder
15. februar 2007 - 16:58 #4
div.getAttribute("style") er også objektet..
Avatar billede Slettet bruger
15. februar 2007 - 16:59 #5
Jeg prøvede selv...den finder vist kun de styles der er sat inline
Avatar billede Slettet bruger
15. februar 2007 - 17:00 #6
Jeg fik en streng tilbage i Firefox
Avatar billede koldstar Nybegynder
15. februar 2007 - 17:03 #7
okay, jeg tester i ie... Men det skal gerne være noget der virker i begge...
Avatar billede Slettet bruger
15. februar 2007 - 17:17 #8
Prøv med denne hurtigt sammenkogte temmelig grimme funktion:

function styleToString(oElement) {
  var oStyles;
  var sResult = "";
  if (oElement.currentStyle)
    oStyles = oElement.currentStyle; //IE
  else
    oStyles = window.getComputedStyle(oElement, null); //Standard
  for (var property in oStyles) {
    var sValue = String(oStyles[property]);
    if (sValue && (sValue.search("function") == -1)) {
      sResult += (sResult != "" ? ", " : "") + property + "=" + sValue;
    }
  }
  return sResult;
}
Avatar billede koldstar Nybegynder
15. februar 2007 - 18:03 #9
Super fedt, den klarer det sådan set... meeeeen, det kunne jo være fedt hvis den kun tog de elementer med der blev brugt :-) Tror du det kan lade sig gøre??
Avatar billede Slettet bruger
15. februar 2007 - 18:26 #10
Hmm, den tager jo sådan set lige præcis alle de styles med som bliver brugt. Problemet er at browseren sætter nogle styles til en default værdi, og du vil kun have de styles der er sat direkte enten inline, eller via et style sheet.

Du kan evt. prøve at sammenholde computedstyle med indholdet af de stylesheets som er tilknyttet siden. Jeg har ikke rodet med det før, så det ville nok tage mig en times tid at lave en løsning og teste den. Det har jeg desværre ikke tid til at give mig i kast med nu.

Her er lidt hints, så du evt. selv kan gå igang:

Hvis der kun er ét stylesheet, kan du finde det ved :

var ss = document.styleSheet[0];

Du kan få et array indeholdende stylesheet reglerne ved:

var rules = ss.cssRules ? ss.cssRules : ss.rules;

Du kan så iterere over reglerne ved hjælp af en løkke:

for (var i = 0; i < rules.length; i++) {
  var rule = rules[i];
  //Gør noget med rule
}

Jeg har ikke testet det, så ved ikke hvad hvilken information der er at hente her. Men, du skal vel finde de regler som gælder for dit element, og så kun plukke de regler ud af computedstyles som indgår...
Avatar billede koldstar Nybegynder
28. februar 2007 - 09:56 #11
hey jjust.
Har vist lige glemt denne tråd. Men tak for det. Fik lavet min løkke, så nu kører det . Kan du ikke smide et svar?
Avatar billede Slettet bruger
01. marts 2007 - 13:28 #12
Kommer her
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