2

ネイティブ HTML テーブルを拡張することは可能ですか?

C# の例:public class: htmltable{}

または次のようなもの:

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

2 に答える 2

3

ブラウザがDOM要素の継承スキームを実装している場合、通常はそのスキームに従ってそれらを拡張できます。最近のほとんどのブラウザは、ECMA-262と一貫性のあるプロトタイプの継承を実装しています、次の理由で使用しないでください。

  1. ユーザーエージェントは継承を実装する必要はありませんが、多くの(ほとんど?)は実装していません。ブラウザ以外にも多くのユーザーエージェントがいることに注意してください
  2. ブラウザが継承を実装している場合でも、ECMA-262と整合性を保つ必要はありません(そうすることは賢明ですが)
  3. 一部またはすべてのブラウザで、拡張機能が現在または将来のホストオブジェクト拡張機能と衝突する可能性があります

Prototype.jsは、それをサポートするUAでDOM要素の継承を使用し、サポートしない場合はDOM要素自体を「拡張」するフォールバックを使用します。上記の理由により、最近その戦略を放棄しました。また、エラーが発生しやすく、低速でした。

于 2012-04-13T06:03:52.660 に答える
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)) + %;
};
于 2012-04-13T19:33:45.317 に答える