2010-01-28 82 views
1

我很尷尬地承認,我無法找到符合標準的方法來使用Javascript修改CSS屬性。或者至少,我認爲是這樣,因爲以下幾點:使用JavaScript不能在嚴格模式下設置CSS屬性?

下面這段代碼在Firefox/WebKit的正常工作沒有DOCTYPE聲明,但不與指定的文檔類型(無論是HTML 4或5)工作:

function setWindowSize(width, height) { 
    console.log("Syncing dimensions:",width,height);   // prints correct values 
    var container = document.getElementById('canvasProxy'); 
    console.log(container);          // prints valid element 
    console.log(container.style);        // prints valid object 
    container.style['width'] = width; 
    container.style['height'] = height; 
    console.log(container.style['width'], container.style['height']); // prints empty values 
} 

其中帆布代理被簡單地定義爲:

<div id="canvasProxy"></div> 

,並沒有與之關聯的樣式。上述代碼直到DOM加載後才執行。

style.setProperty和style.getPropertyCSSValue也無法正常工作。所以呃...什麼是正確的形式?我瘋了嗎?

(我敢打賭,jQuery的可以處理這只是罰款,但我試圖保持頁面大小在這種特殊情況下的絕對最低。)

+2

你最好轉移到jQuery,這使得這種類型的東西在所有瀏覽器中簡單易用。 – 2010-01-28 19:25:17

回答

4

你不說你是路過什麼樣的價值觀,或者你認爲是正確的,但是我會給出很好的賠率,你通過整數而不是長度

CSS需要長度不等於0的單位。大多數瀏覽器將執行錯誤恢復(與CSS規範直接相反),並且假設您的意思是px(如果您未能指定單位......但只在怪癖模式下)。

+0

就是這樣,謝謝。對這個愚蠢的問題抱歉。 – Ender 2010-01-28 19:28:32

-2
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $('canvasProxy').css('width', 300); 
    $('canvasProxy').css('height', 50); 
</script> 
+0

試過這個。它沒有工作。 – Quentin 2010-01-28 19:50:39

相關問題