と を補償しながら、行と列のインデックスで表のセルを選択できるようにしたいと思いrowspan
ますcolspan
。たとえば、次の表では、
(1,2) 赤、(2,3) 緑、(3,3) 青を着色すると、次のようになります。
「行番号と列番号でテーブル内の任意のセルを選択する」という質問への回答を試みましたが、次の結果が得られました。
これが jsFiddle です: http://jsfiddle.net/acheong87/27HuN/
私は何が起こっているのかを理解しており、別の質問"Table cellIndex and rowIndex with colspan/rowspan" を見つけました。ここでは回答がプラグインとして提供されていましたが、もっと簡単な方法がないことは信じられないほどです! 結局のところ、実際の結果の色付けは理解できるように見えますが、直感的ではないように見えますが、期待される結果の色付けははるかに直感的で簡単に把握できるように見えます。
これを実装するための賢くて簡単な方法を考えられる人はいますか?
アップデート
これは、他の人の新しいアイデアを刺激する可能性がある場合に備えて、私の(貧弱な)試みの新しい jsFiddleです。基本的に、row ヘッダーと col ヘッダーがスパンされていないと仮定した場合(もちろん、これは有効な仮定ではありません)、オフセットを使用して正しいセルを「ターゲットにする」ことができます。
function getCell(table, r, c)
{
var rowHead = $(table.rows[r].cells[0]);
var colHead = $(table.rows[0].cells[c]);
var y = rowHead.offset().top + rowHead.outerHeight(true)/2;
var x = colHead.offset().left + colHead.outerWidth(true)/2;
return $(document.elementFromPoint(x, y));
}
デモは機能しているように見えますが、いくつかの問題があります。
- 行ヘッダーと列ヘッダーがスパンされていないと想定することはできません。
- 行または列の中間点がビューポートから外れている場合は機能しません。
elementFromPoint
ビューポートに依存するようです。 - スクロールやマージンなどが発生すると、確実に機能しません。一般的に薄っぺらです。むしろ座標計算に依存したくありません。