2014-06-26 39 views
1

我寫了一個js的網格。網格有一個功能,我在這裏輸入每個列的寬度。如何在css文件中添加css動作?

mygrid._struct = [{ fieldType : "deltaHedgeType", defaultWidth : 80}, 
      { fieldType : "quoteccy", defaultWidth : 40 }] 

所以電網HTML生成這樣

<table id="mygrid"> 
    <tr> 
    <td class="deltaHedgeType"></td> 
    <td class="quoteccy"></td> 
    </tr> 
    <tr> 
    <td class="deltaHedgeType"></td> 
    <td class="quoteccy"></td> 
    </tr> 
</table> 

我想這個CSS在style.css中追加

#mygrid .deltaHedgeType{ 
    width:40; 
} 
#mygrid .quoteccy{ 
    width:80; 
} 

什麼都在我的腦海中標籤頭追加這個CSS 。因爲IE瀏覽器有數量限制,也增加了頁面的html大小。所以我如何在style.css中附加這個CSS。

+0

您可以動態更改css屬性的值。 –

回答

1

你必須分析mygrid._struct得到的字段類型和defaultWidth,然後爲每個eleement使用下面的代碼

最後的javascript添加CSS將

var style = document.createElement('style'); 
style.type = 'text/css'; 
style.innerHTML = '#mygrid.'+fieldType+'{ width:'+defaultWidth+'; }'; 
document.getElementsByTagName('head')[0].appendChild(style); 

對於即限制或者使用一個ID在一個已經使用過的風格和引用它使用jquery或創建一個新的,並附加所有你的風格,這一個。

  $style = $('#MyGridStyle'); 
      if (!$style[0]) { 
      $style = $("<style id='MyGridStyle' type='text/css' rel='stylesheet' />").appendTo($("head")); 
      } 

現在用這個$風格添加到這個

參考IE 8 and 7 bug when dynamically adding a stylesheet另一種解決方案

+0

我有這個解決方案。我想要的是CSS附加到style.css不在html中 – Amit

+0

添加到style.css會有什麼好處,因爲它只是一個本地更改,一旦頁面刷新後將恢復爲舊版本。 – dev

+0

我在這裏使用這個網格是單頁面應用程序。超過15個電網即將使用,每個電網有20多個列。所以CSS的大小將是巨大的。和其他限制,因爲我在我的問題中提到IE瀏覽器限制追加