tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
404
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    -André- -André- ist offline Mitglied Gold
    Registriert seit
    Jul 2006
    Beiträge
    115
    Hallo,
    ich möchte eine Bildergalerie auf meiner Homepage in valides Xhtml und css umschreiben und deshalb die style-Attribute aus dem Code in Css-Selectoren packen.

    ich habe folgende Javascriptfunktionen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    
    *Funktion zum Einfuegen einer CSS Regel>>>>*/
    function cssEinf (styleS,selector, wert, index) 
    {
        if(document.styleSheets[0].cssRules) 
        {
            styleS.insertRule(selector+"{"+wert+"}",index);
        }
        else if(document.styleSheets[0].rules)
        {
            styleS.addRule(selector,wert,index);
        }
    }   
    /*Function zum hinzufuegen / aendern einer Eigenschaft>>>>>*/
    function cssAe (styleS,index)
    {
        var argumenteAz = arguments.length;
        if(document.styleSheets[0].cssRules) 
        {
            var regel = styleS.cssRules[index];
            var eigenschaft;
            for(var arg = 2; arg<argumenteAz; arg+=2)
            {   
                eigenschaft = arguments[arg];
                regel.style.eigenschaft = arguments[arg+1];
                alert(eigenschaft+ regel.style.eigenschaft);
            }
        
        }
        else if(document.styleSheets[0].rules)
        {
            var regel = styleS.rules[index];
            var eigenschaft;
            for(var arg = 2; arg<argumenteAz; arg+=2)
            {
                eigenschaft = arguments[arg];
     
                regel.style.eigenschaft = arguments[arg+1];
            }
        }
    }
    davor wir das Style-Element dynamisch erstellt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    /*-----Style Element erstellen>>>>>*/
        var myStyleE = document.createElement("style");
        myStyleE.setAttribute("type","text/css");
        document.getElementsByTagName("head")[0].appendChild(myStyleE);
        /*<<<<<Style Element erstellen-----*/
        /*-----Style Element auswaehlen>>>>*/
        var styles = document.styleSheets.length;
        myStyle = document.styleSheets[styles-1];
        /*<<<<<Style Element auswaehlen----*/
        /*-----Style Anweisungen schreiben>>>>>*/
        cssEinf(myStyle,"#bild","",indexBild);
        cssEinf(myStyle,"#wgtext","",indexWgText);
        cssEinf(myStyle,"#schliessenImg","",indexSchliessenImg);
        cssEinf(myStyle,"#weiterBild","",indexWeiterBild);
        cssEinf(myStyle,"#zureueckBild","",indexZurueckBild);
        cssEinf(myStyle,"#bilderzahl","",indexBilderzahl);
        /*<<<<<Style Anweisungen schreiben-----*/
    Die Variablen index... werden vorher global definiert.

    die Funktionen rufe ich so auf:
    Code :
    1
    
    cssAe(myStyle,indexBild,"position","absolute","left",Math.round(((fensterbreite-breiteaz)/2)-20)+"px","top",Math.round((fensterhoehe-hoeheaz)/2)+"px");

    Ich habe mir das ganze im Firefox mit Firebug betrachtet, die Regel #bild existiert, aber die Eigenschaften und werte sind nicht eingetragen, die Regel ist also leer.
    Wenn ich die Zeile
    Code :
    1
    
    regel.style.eigenschaft = arguments[arg+1];
    der Funktion cssAe z.B. in
    Code :
    1
    
    regel.style.margin = arguments[arg+1];
    ändere, wird diese Zuweisung auch von Firefox erkannt, d.h die Regel #bild ist nicht mehr leer.

    Woran liegt das, bzw. wie kann ich das ändern?

    Gruß

    -André-
     

  2. #2
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    Zitat Zitat von -André- Beitrag anzeigen

    Ich habe mir das ganze im Firefox mit Firebug betrachtet, die Regel #bild existiert, aber die Eigenschaften und werte sind nicht eingetragen, die Regel ist also leer.
    Wenn ich die Zeile
    Code :
    1
    
    regel.style.eigenschaft = arguments[arg+1];
    der Funktion cssAe z.B. in
    Code :
    1
    
    regel.style.margin = arguments[arg+1];
    ändere, wird diese Zuweisung auch von Firefox erkannt, d.h die Regel #bild ist nicht mehr leer.

    Woran liegt das, bzw. wie kann ich das ändern?
    Ohne jetzt den Sinn dahinter so richtig verstanden zu haben (soll das onload bei Aufruf der Galerie laufen?):

    Mit
    Code :
    1
    
    regel.style.eigenschaft = ...;
    versuchst Du die CSS-Eigenschaft "eigenschaft" zu ändern, die es natürlich nicht gibt. Versuch es mal so:
    Code :
    1
    
    regel.style[eigenschaft] = ...;

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  3. #3
    -André- -André- ist offline Mitglied Gold
    Registriert seit
    Jul 2006
    Beiträge
    115
    Danke, mit
    Code :
    1
    
    regel.style[eigenschaft]
    klappt das jetzt.

    Gruß

    -André-
     

Ähnliche Themen

  1. Komisches verhalten zwischen style.left und style.width
    Von one6666 im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 07.04.10, 11:59
  2. js style Problem
    Von mmhhh im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 07.04.09, 13:26
  3. Problem mit XP Style
    Von vb_user im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 04.03.06, 22:31
  4. Style switch problem
    Von uran im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 14.02.06, 11:45
  5. style problem bei IE
    Von Serethos im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 10.08.05, 14:15