I have a little problem.
When I set the css rule using some property, say, background-image in an external .css file and then try to access it using javascript in another external .js file, it does not work. That is to say I do not get any value for document.getElementById(someId).style.backgroundImage.
But when I set the css rule using style attribute in html file itself, it works.
So, my query is can't I access css property in js, if css is set in external .css file.
You can only access style properties in Javascript that have been set via Javascript (or the style
attr).
To access the elements current style you should fetch the computed style
of the element.
var el = document.getElementById('hello');
var comp = el.currentStyle || getComputedStyle(el, null);
alert( comp.backgroundColor );
Note, that the computed style may vary in browsers (like color being in hex or rgb) so you should normalize that if you want unified results.
If you are trying to access a css property set in a stylesheet, rather than an inline style property, use document.defaultView.getComputedStyle (anything but IE below 9) or element.currentStyle in older IE's.
eg:
function deepCss (who, css){
var dv, sty, val;
if(who && who.style){
css= css.toLowerCase();
sty= css.replace(/\-([a-z])/g, function(a, b){
return b.toUpperCase();
});
val= who.style[sty];
if(!val){
dv= document.defaultView || window;
if(dv.getComputedStyle){
val= dv.getComputedStyle(who,'').getPropertyValue(css);
}
else if(who.currentStyle){
val= who.currentStyle[sty];
}
}
}
return val || '';
}
deepCss(document.body,'font-size')
Are you trying to retrieve the property before it's actually rendered/the DOM is ready? Try doing it in the body's onload
event, or if you're using jQuery, $(document).ready()
.
You could use jquery to edit. Refer to http://api.jquery.com/css/
the style property can be used to set styles and to retrieve inline style values, but it cannot retrieve style values set in an external style sheet.
someElement = document.getElementById("element");
myStyles = document.defaultView.getComputedStyle(someElement,null);
backgroundImage = myStyles.getPropertyValue("background-image"); // w3c
backgroundImage = someElement.currentStyle["background-image"]; //IE
©2020 All rights reserved.