Cybaer: CSS-Eigenschaften per JS auslesen

Beitrag lesen

Hi,

aus einem Stylesheet auslesen: Coding: CSS-Regeln (& Stylesheets) auslesen & ändern

Aktuellen Wert auslesen:

// Ermittle Style eines Elements 060627  
function getStyle(element,property) {  
 // Beim IE kann man (ueber currentStyle - IE5+) keine Eigenschaften  
 // abfragen, die kombinierte Werte enthalten (border, borderBottom, ...)  
 // Andererseits gibt es zu clip hier auch clipTop, clipRight, clipBottom & ClipLeft.  
 var result="";  
  
 obj=getObject(element);  
  
 if(obj) {  
  if(window.getComputedStyle) {  
   result=window.getComputedStyle(obj,"").getPropertyValue(property);  
  } else if(obj.currentStyle) {  
   result=obj.currentStyle[propertyToStyle(property)];  
  } else if(obj.style) {  
   result=obj.style[propertyToStyle(property)];  
  }  
 }  
  
 return result;  
}  
  
// Style-Schreibweise von CSS auf JS aendern  
function propertyToStyle(property) {  
 // 1. Eigenschaften mit reserviertem Bezeichner: Unterscheidung nach JScript- bzw. JavaScript-Syntax  
 if(property=="float") { property=((typeof(window.cssFloat)=="undefined")?"style":"css")+property.charAt(0).toUpperCase()+property.substring(1); }  
 // 2. Eigenschaften mit Bindestrich  
 else if(property.indexOf("-")>=0) {  
  // CSS-Syntax am "-" auftrennen, ...  
  syntax=property.split("-");  
  // ... ersten Teil uebernehmen und ...  
  property=syntax[0];  
  // ... folgende Teile mit grossem Anfangsbuchstaben  
  for(i=1; i<syntax.length; i++) { property+=syntax[i].charAt(0).toUpperCase()+syntax[i].substring(1); }  
 }  
 return property;  
}  
  
// Ermittle Objekt (veraenderbare Prioritaet: object/id/name/tagname) 050708  
function getObject(element,number) {  
 var obj=false, lastParam, type, types, i;  
 if(element) {  
  // Letzten, optionalen Parameter ermitteln (type)  
  lastParam=getObject.arguments[getObject.arguments.length-1];  
  // Erwuenschten Abfragetyp sichern: object/id/name/tagname (voreingestellte Typen und Reihenfolge der Abfrage)  
  type=(typeof(lastParam)=="string" && getObject.arguments.length>1)?lastParam.toLowerCase().replace(",","\/"):"object/id/name/tagname";  
  // Wenn element bereits Objekt ist und auch dieser Typ sein darf  
  if(typeof(element)=="object" && type.indexOf("object")>=0) { obj=element; }  
  else if(document.getElementById) {  
   number=(typeof(number)=="number")?number:0;  
   types=type.split("/");  
   for(i in types) {  
    if(types[i]=="id" && document.getElementById(element)) { obj=document.getElementById(element); break; }  
    else if(types[i]=="name" && document.getElementsByName(element) && document.getElementsByName(element)[number]) { obj=document.getElementsByName(element)[number]; break; }  
    else if(types[i]=="tagname" && document.getElementsByTagName(element) && document.getElementsByTagName(element)[number]) { obj=document.getElementsByTagName(element)[number]; break; }  
   }  
  }  
 }  
 return obj;  
}

Gruß, Cybaer

--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!