2012-04-13 4 views
2

ネイティブHTMLテーブルを拡張することはできますか?HTMLテーブルの拡張方法またはプロトタイプ

C#の例:public class: htmltable{}

か何かのように:

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

悲しいことに、あなたがDOMの内容を変えることができる程度は、IEと吸いつかないブラウザの間ではかなり異なります。しかしここであなたの究極の目標は何ですか?これがうまくいけば、.classNameを直接打つ代わりに使用する方法になります。そのクラスまたは何かを持つページのすべてのテーブルに自動的にヒットしません。 –

答えて

3

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

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

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

+0

まだプロトタイプを更新していますか? –

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)) + %; 
}; 
関連する問題