2012-04-13 98 views
2

是否可以擴展原生HTML表格?如何擴展或原型HTML表格

C#示例:public class: htmltable{}

或類似的東西:

HTMLTable.prototype.myType=function(){ 
this.clss='myClass'; 
this.setAttribute('class',this.clss); 
} 
+1

不幸的是,在IE和不吸引的瀏覽器之間,你可以對DOM進行修改的程度有很大的不同。但是你最終的目標是什麼?如果這個工作,它將只是一個方法來使用,而不是直接擊中.className。它不會自動打到具有該類別或任何內容的頁面上的所有表格。 – 2012-04-13 06:04:10

回答

3

如果瀏覽器已經實現了DOM元素的繼承方案,通常可以根據該計劃擴展它們。大多數現代瀏覽器實現原型繼承是與ECMA-262一致,不過因爲不使用它:

  1. 來實現繼承不要求用戶代理,許多(?大多數)沒有。請注意,有比瀏覽器
  2. 其他許多用戶代理,即使瀏覽器完全實現繼承,有一個爲它是符合ECMA-262(雖然這將是明智的話)沒有要求
  3. 您的擴展名可以與衝突在某些或所有瀏覽器中當前或未來的主機對象擴展

Prototype.js在支持它的UA中使用DOM元素繼承,並使用「擴展」DOM元素本身的回退。由於上述原因,它最近放棄了這一戰略。這也是容易出錯和緩慢的。

+0

他們還在更新Prototype嗎? – 2012-04-13 06:10:40

0

我正在建立一個在線cad程序,是一個海拔。海拔高度有包含分隔海灣的門,窗和水平線的海灣。使用表格非常適合這種情況,「直到瀏覽器開始實現工作人員和本地存儲以及畫布」。

我正在使用陣列來存儲每個托架,即:變暗,水平計數,門或窗口計數。因此,如果需要調整大小或發生某些事情,我必須循環訪問托架陣列並重置其所有屬性。然後我必須更新實際的td以供查看。基本上,我在覈心中更新它,並將其傳回到用戶界面,並且它可以根據需要更新信息。

我只是確保我無法擴展htmltd之前,我去了很遠。我認爲這樣做可以很好地消除陣列,也許這也不是最好的方式,但它看起來像我永遠不會知道。 ;)

類似下面的代碼是我所追求的。

this.myWidth; 

var bays = this.rows[0].cells, len=bays.length, bay; 
for(i=0; i< len;i++){ 

    this.myWidth = someThingCalculated from a parameter; 
    bay = bays[i]; 
    bay.style.width= ((this.myWidth/elevationWidth) * 100)) + %; 
};