任何人都可以告訴我這段JS的問題是什麼?我試圖將'容器的margin-top'的值賦給m變量。獲取CSS元素的價值
function test()
{
var e = document.getElementById('container');
var m = e.style.getPropertyValue("marginTop");
alert (m);
}
編輯:警報是爲了顯示m的
任何人都可以告訴我這段JS的問題是什麼?我試圖將'容器的margin-top'的值賦給m變量。獲取CSS元素的價值
function test()
{
var e = document.getElementById('container');
var m = e.style.getPropertyValue("marginTop");
alert (m);
}
編輯:警報是爲了顯示m的
值試試這個:
function getStyle(elment, style) {
var x = document.getElementById(element);
if (x.currentStyle) {
var y = x.currentStyle[style];
} else if (window.getComputedStyle) {
var y = document.defaultView.getComputedStyle(x, null).getPropertyValue(style);
}
return y;
}
function test() {
var m = getStyle('container', 'margin-top');
alert(m);
}
另外,要小心你的變量範圍。 m
將不會被定義在test()
之外。
謝謝,不過警告消息顯示爲空白 – james 2012-02-09 19:00:45
這就是我所害怕的。 'marginTop'僅在明確設置了「margin-top」的情況下定義。試試這個新版本。 – Blender 2012-02-09 19:48:40
我無法證實你的假設。這更可能與計算風格有關。 'style'屬性只能訪問內聯樣式。 – PointedEars 2012-02-09 20:11:20
您可以嘗試使用這個簡單的功能:
function test()
{
var e = document.getElementById('container');
var m = getStyle(e, "marginTop");
alert ('hi ' + m);
}
function getStyle(el,styleProp)
{
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
else
var y = el.style[styleProp];
return y;
}
這太簡單了。 'getPropertyValue()'只支持帶連字符的屬性名稱,它應該是'document.defaultView.getComputedStyle'(以及更復雜的功能測試)以支持Safari WebKit。 – PointedEars 2012-02-11 13:57:28
是價值明確定義? – Christophe 2012-02-09 18:56:26
這個'alert('hi')'與這個問題有關嗎?! – gdoron 2012-02-09 18:57:26
抱歉,我的意思是:alert(m); – james 2012-02-09 18:59:05