如何扩展或原型化HTML表

时间:2012-04-13 05:48:23

标签: javascript inheritance extend

是否可以扩展原生HTML表格?

C#示例:public class: htmltable{}

或类似的东西:

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

2 个答案:

答案 0 :(得分:3)

如果浏览器已经为DOM元素实现了继承方案,您通常可以根据该方案扩展它们。大多数现代浏览器都实现了与ECMA-262一致的原型继承,然而不使用它,因为:

  1. 用户代理不需要实现继承,许多(大多数?)不需要。请注意,除了浏览器之外,还有许多用户代理
  2. 即使浏览器确实实现了继承,也没有要求它与ECMA-262保持一致(尽管这样做是明智的)
  3. 您的扩展程序可能会与某些或所有浏览器中的当前或未来主机对象扩展程序发生冲突
  4. Prototype.js在支持它的UA中使用DOM元素继承,并且在不支持的情况下使用“扩展”DOM元素本身的后备。由于上述原因,它最近放弃了这一战略。它也容易出错并且很慢。

答案 1 :(得分:0)

我正在建立一个海拔的在线cad程序。海拔高度的海湾包含分隔海湾的门,窗和水平线。使用表格非常适合这种情况,“直到浏览器开始实现工作人员和本地存储以及画布”。

我使用阵列存储每个托架,即:调光,水平计数,门或窗口计数。因此,当调整大小或发生某些事情时,我必须循环遍历托架阵列并重置所有属性,如果需要的话。然后我必须更新实际的td以供查看。基本上我在核心中更新它并将其传递回UI,它可以满足更新信息的需要。

我只是确保在我走远之前无法扩展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)) + %;
};