【问题标题】:How to extend or prototype a HTML table如何扩展或原型化 HTML 表格
【发布时间】:2012-04-25 12:35:19
【问题描述】:

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

C# 示例:public class: htmltable{}

或类似:

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

【问题讨论】:

  • 遗憾的是,在 IE 和不烂的浏览器之间,您可以修改 DOM 的程度有很大差异。但是你在这里的最终目标是什么?如果这行得通,它只是一种使用方法,而不是直接点击 .className 。它不会自动命中页面上具有该类或任何内容的所有表。

标签: javascript inheritance extend


【解决方案1】:

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

  1. 用户代理不需要实现继承,很多(大多数?)不需要。请注意,除了浏览器之外,还有许多用户代理
  2. 即使浏览器确实实现了继承,也没有要求它与 ECMA-262 一致(尽管这样做是明智的)
  3. 您的扩展可能会与某些或所有浏览器中当前或未来的主机对象扩展发生冲突

Prototype.js 在支持它的 UA 中使用 DOM 元素继承,并在不支持的地方使用“扩展”DOM 元素本身的后备。由于上述原因,它最近放弃了该策略。它也容易出错且速度慢。

【讨论】:

  • 他们还在更新 Prototype 吗?
【解决方案2】:

我正在构建一个在线 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)) + %;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 2022-11-12
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多