Ответ 1
Как и все свойства css, содержащие дефисы, их соответствующие имена в JS - это удаление дефиса и создание следующего капитала письма: backgroundColor
alert(myDiv.style.backgroundColor);
Как я могу получить цвет фона любого элемента, скажем, Div, используя javascript. Я пробовал: -
<html>
<body>
<div id="myDivID" style="background-color: red">shit happens</div>
<input type="button" value="click me" onclick="getColor();">
</body>
<script type="text/javascript">
function getColor(){
myDivObj = document.getElementById("myDivID")
if ( myDivObj ){
alert ( 'myDivObj.bgColor: ' + myDivObj.bgColor ); // shows: undefined
alert ( 'myDivObj.backgroundcolor: ' + myDivObj.backgroundcolor ); // shows: undefined
//alert ( 'myDivObj.background-color: ' + myDivObj.background-color ); // this is not a valid property :)
alert ( 'style:bgColor: ' + getStyle ( myDivObj, 'bgColor' ) ); //shows: undefined
alert ( 'style:backgroundcolor: ' + getStyle ( myDivObj, 'backgroundcolor' ) ); // shows:undefined:
alert ( 'style:background-color: ' + getStyle ( myDivObj, 'background-color' ) ); // shows: undefined
}else{
alert ( 'damn' );
}
}
/* copied from `QuirksMode` - http://www.quirksmode.org/dom/getstyles.html - */
function getStyle(x,styleProp)
{
if (x.currentStyle)
var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
return y;
}
</script>
</html>
Как и все свойства css, содержащие дефисы, их соответствующие имена в JS - это удаление дефиса и создание следующего капитала письма: backgroundColor
alert(myDiv.style.backgroundColor);
Получить номер:
window.getComputedStyle( *Element* , null).getPropertyValue( *CSS* );
Пример:
window.getComputedStyle( document.body ,null).getPropertyValue('background-color');
window.getComputedStyle( document.body ,null).getPropertyValue('width');
~ document.body.clientWidth
С jQuery:
jQuery('#myDivID').css("background-color");
С прототипом:
$('myDivID').getStyle('backgroundColor');
С чистым JS:
document.getElementById("myDivID").style.backgroundColor
Это зависит от того, какой стиль от div вам нужен. Это стиль фона, который был определен в CSS
, или стиль фона, который был добавлен через javascript(inline)
к текущему узлу?
В случае стиля CSS
вы должны использовать компьютерный стиль. Как и в getStyle()
.
Со встроенным стилем вы должны использовать ссылку node.style
: x.style.backgroundColor
;
Также обратите внимание, что вы выбираете стиль с помощью ссылки camelCase/без дефиса, поэтому не background-color
, а backgroundColor
;
Это сработало для меня:
var backgroundColor = window.getComputedStyle ? window.getComputedStyle(myDiv, null).getPropertyValue("background-color") : myDiv.style.backgroundColor;
А еще лучше:
var getStyle = function(element, property) {
return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];
};
var backgroundColor = getStyle(myDiv, "background-color");
Использование JQuery:
var color = $('#myDivID').css("background-color");
btw, проверьте следующие сравнения использования функции getelementsbyclassname: http://ejohn.org/blog/getelementsbyclassname-in-firefox-3/