
参考サイト:http://peacepopo.net/blog-entry-194.html
デモ:http://peacepopo.net/wp-content/uploads/ftp/194/ …
上記のサイト様の様に縦横ハイライトさせたいのですが、
TABLEにrowspanが入っていると、rowspanのとなりの一番上のセルを
マウスオーバーした際に縱のハイライトがずれてしまいます。
過去の質問の中に近い物は見つけたのですがいまいち適用できません。
http://qa.itmedia.co.jp/qa6415069.html
なにか別の良い方法があればご伝授御願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは
No1様もおっしゃっていますように、rowspanやcolspanが含まれると、マークアップの構造と行、列の関係は一致しなくなります。
行に関しては、tr要素があるので多少なりとも関係を維持できていますが、列に関してはまるっきりなので、文書構造からは判断できなくなりますね。
表全体の構成を解析しておいて位置関係を計算するか、あるいは、レイアウトされた結果から判断するしかないように思います。
一方で、どのようなルールになさりたいのかについては、ご質問文に書いてないのでわかりませんが、とりあえず似たものとして、エクセルの選択に近い感じで考えてみました。
・・とは言え、選択ではなくてmouseoverなので印象は少々違いますが。
以下は、レイアウトされた結果の位置から判断する方法での一例です。
ルールとして違うものを適用なさりたい場合は、判断している部分(if~の部分)を修正すれば可能と思います。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style type="text/css">
td { width:2em; height:1.2em; }
td.active { background-color: #FDA; }
td.relative { background-color: #FFC; }
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.2. …
</head>
<body>
<table id="test" border="1">
<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td>
<td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr>
<tr><td>11</td><td>12</td><td colspan=4>13</td>
<td>17</td><td rowspan=3>18</td><td>19</td><td>20</td></tr>
<tr><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td>
<td>26</td><td>27</td><td>29</td><td>30</td></tr>
<tr><td>31</td><td rowspan=2 colspan=2>32</td><td>34</td>
<td>35</td><td>36</td><td>37</td><td>39</td><td>40</td></tr>
<tr><td>41</td><td>44</td><td>45</td>
<td colspan=3>46</td><td>49</td><td>50</td></tr>
<tr><td>51</td><td>52</td><td>53</td><td>54</td><td>55</td>
<td>56</td><td>57</td><td>58</td><td>59</td><td>60</td></tr>
</table>
<script type="text/javascript">
var tbl = $("#test"), tds = $("td", tbl);
tbl.on("mouseenter", "td", function(){
var t = $(this), o = t.offset();
var x1 = o.left, x2 = x1 + t.width();
var y1 = o.top, y2 = y1 + t.height();
for(var i=0; i<tds.length; i++){
var e = tds.eq(i), o = e.offset();
var x = o.left; y = o.top;
if((x1<=x && x<x2) || (y1<=y && y<y2)) e.addClass("relative");
}
t.removeClass("relative").addClass("active");
}).on("mouseleave", "td", function(){
$("td", tbl).removeClass("active").removeClass("relative");
});
</script>
</body>
</html>
No.1
- 回答日時:
答えは「できない」です。
<table border>
<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>
<tr><td>5</td><td rowspan=2>6</td><td>7</td><td>8</td></tr>
<tr><td>9</td><td rowspan=2>10</td><td>11</td></tr>
<tr><td>12</td><td>13</td><td>14</td></tr>
</table>
上記、6や10のようなズレが想定されるので相関関係がおかしくなるので
逆に、このような例外をどうするかきちんと仕様をきめればやりようはあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- Excel(エクセル) エクセルのVBAで上の表の最下行を求める 4 2022/09/14 15:22
- Excel(エクセル) なぜか正常にマクロが動いていない? 1 2022/11/03 07:56
- CPU・メモリ・マザーボード emachines eme732z f22bというパソコンのCPU交換についてです。 CPU Pen 3 2022/08/25 22:53
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一覧から選択した行の行番号を...
-
特定<table>内の<td>の色を変える
-
ハイパーリンクを別ウインドウ...
-
至急!GetElementById でtdの...
-
jspでのArrayListの値の表示
-
クリックされた罫表セルの行番...
-
JSで、テーブルのある行のみ、...
-
onMouseOverで複数(?)のセル...
-
マウスをブラウザの外に出した...
-
テーブル内に表示されている数...
-
tableの任意行にfocusをあてる
-
PERL
-
TRタグの入れ子におけるchildNo...
-
jqueryとscriptでTABLEのセルを...
-
【jQuery】input nameの文字列...
-
<input>の選択肢をプルダウンメ...
-
イベント発生順序
-
javascriptでプルダウンメニュ...
-
【jQuery】tableループ内のIDの...
-
onchangeイベントを強制的に発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイパーリンクを別ウインドウ...
-
一覧から選択した行の行番号を...
-
至急!GetElementById でtdの...
-
JavaScriptで特定のtdタグにcla...
-
HTML中のTABLEのデータを抽出す...
-
jQueryのプラグイン「Tablesort...
-
チェックボックスにチェックが...
-
特定<table>内の<td>の色を変える
-
プルダウンで選択すると、DBの...
-
tableの任意行にfocusをあてる
-
クリックされた罫表セルの行番...
-
JavaScriptでテーブルをクリッ...
-
テーブルの項目の値取得
-
スクロールバーの表示位置を変...
-
マウスをブラウザの外に出した...
-
テーブルで複数行をまとめて非...
-
jspでのArrayListの値の表示
-
Excelで作ったhtmlファイルのサ...
-
COBOLで作ったテキストファイル...
-
別ページからOnclickでテーブル...
おすすめ情報