Jeg ved, at der i JS er en måde, at fx hente bredden på et element, men findes der en måde hvorpå jeg let kan få alt style på et given element via både class og id?
Jeg har nemlig en hel liste over class og id, hvor scriptet så skal hente det valgtes style ud.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Der findes ikke en standardiseret og crossbrowser metode til at hente andet, end hvad der er sat direkte på elementets style-objekt ... enten i taggets style-attribut eller via script
Du kan lave denne lille 'cowboy-test' for at se, hvad objektet gemmer på af properties og metoder:
<script type="text/JavaScript"> window.onload = function() { var o = gE("gnu"); var aCss = window.getComputedStyle(o, ""); var a = []; for (var x in aCss) { a.push( x + " => " + aCss[x] ); } with ( open("", "", "width=400,height=200,resizable=yes,scrollbars=yes").document ){open();write(a.join("<br>\r\n"));close()}; } </script>
- og som du kan se, indeholder objektet en metode, der hedder 'item'. Prøver du at kalde den med et tal som argument, kan du se, den returnerer en streng, som er navnet på en style-property. Den metode ville vi kunne bruge sådan:
window.onload = function() { var o = gE("gnu"); var oCss = window.getComputedStyle(o, ""); var a = []; for (var i=0,j=oCss.length; i<j; i++) { a.push( oCss.item(i) + " => " + oCss[ oCss.item(i) ] ); } with ( open("", "", "width=400,height=200,resizable=yes,scrollbars=yes").document ){open();write(a.join("<br>\r\n"));close()}; }
Undskyld jeg forstyrre men ville bare have at olebole skulle have sine velfortjente point i min post som han har glemt :-) http://www.eksperten.dk/spm/797237
En anden ting, hvis jeg henter fra id fx test, som har en baggrunds farve eller billede defineret, så får jeg stadigvæk undefined på den. Det lader som om det kun er color, height og width den vil hente ordenligt.
Ang. camelcase, burde getcomputedstyle så ikke selv retunere den, den retunere nemlig background-color fx.
Min function er nedenstående, hvor jeg så har valgt ikke at medtage alle dem som er undefined.
function StartEditor() { var e2 = document.getElementById('IdSelect'); if(e2.selectedIndex != 0) { //alert(e2.options[e2.selectedIndex].value); var o = document.getElementById(e2.options[e2.selectedIndex].value); var oCss = window.getComputedStyle(o, ""); var a = []; for(var i=0;i<oCss.length;i++) { if(oCss[oCss.item(i)]) a.push(RenameWord(oCss.item(i)) + ':' + oCss[oCss.item(i)] + ';'); //a.push( RenameWord(oCss.item(i)) + " => " + oCss[ oCss.item(i) ] ); } with(open("", "", "width=400,height=200,resizable=yes,scrollbars=yes").document){open();write(e2.options[e2.selectedIndex].value + ' {<br />');write(a.join("<br />\r\n"));write('<br />}');close()}; } }
Synes godt om
Ny brugerNybegynder
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.