参考URLをベースに、iframeの中の要素の操作で横列のハイライト、縦列にrowspanを除いたclassの連番割当はできるようになりました。
しかし列のみ適応されません。
$(this).attr('class');で既存クラスまで拾っていることが原因なのかと思い既存のクラスをリムーブしてみましたが特に変化なく…
何が原因でしょうか?どなたかお知恵を拝借させてください。
------------------
参考URL
http://www.finefinefine.jp/jquery/kiji696/
------------------
▼HTML(JS適応)
<iframe width="500" height="500" frameborder="0" id="shikaku-iframe" src="sample1.html"></iframe>
------------------
▼iframe内HTML/sample1.html(同ドメイン内)
<table class="crosstable">
<tbody>
<tr><td class="blank"></td>
<td>店舗</td>
<td style="">A店</td>
<td style="">B店</td>
</tr>
<tr>
<td rowspan="3">くだもの</td>
<td class="yellow">バナナ</td><td class="maru">○</td><td class="maru">○</td>
</tr>
<tr>
<td class="red">リンゴ</td><td class="maru">○</td><td class="maru">○</td>
</tr>
<tr>
<td class="red">いちご</td><td class="maru">○</td><td class="maru">○</td>
</tr>
<tr>
<td rowspan="1">野菜</td>
<td class="red">トマト</td><td class="slash">/</td><td class="slash">/</td>
</tr>
</tbody>
</table>
------------------
▼JS側
(function($) {
"use strict";
//rowspan属性のあるtdにclassを付ける
$('iframe').contents().find('td').each(function() {
if($(this).attr('rowspan') !== undefined) {
$(this).addClass("rowspan");
}
});
//既存クラスを削除してみる※変化なし
$('iframe').contents().find("td").each(function() {
$(this).removeClass("maru");
$(this).removeClass("slash");
$(this).removeClass("yellow");
$(this).removeClass("red");
});
//クラスrowspanとblankを除きclassを連番付与
$('iframe').contents().find("tr").each(function () {
$(this).children().not('.rowspan').not('.blank').each(function (i) {
i = i+1;
$(this).addClass("item" + i);
});
});
//関数colorを作成
$.fn.color = function() {
return this.each(function() {
$(this).not('.rowspan').not('.blank').css('background-color', '#eee');
});
};
//行の背景色変更
$('iframe').contents().find("tr").mouseout(function() {
$(this).children().css('background-color', '');
});
//列の背景色変更
$('iframe').contents().find("td").each(function() {
var selector = '.'+ $(this).attr('class');
$(this).hover(function(){
$(selector).color();
$(this).siblings().color();
$(this).css('background-color', '#ccc');
},function(){
$(selector).css('background-color', '');
$(this).parent().css('background-color', '');
});
});
})(jQuery);
No.1ベストアンサー
- 回答日時:
さんこうにもなりませんね。
<!DOCTYPE html>
<meta charset="UTF-8">
<title>?</title>
<body>
<iframe width="500" height="300" frameborder="0" id="shikaku-iframe" src="sample1.html"></iframe>
<script>
window.addEventListener('DOMContentLoaded', () => {
let
doc = document.querySelector('iframe').contentWindow.document,
sheet = doc.head.appendChild (doc.createElement ('style')).sheet;
[`table{overflow:hidden}`,
`tr:not(:first-of-type):hover td:not([rowspan]){
background: rgba(0,0,0,0.2);
position: relative;
}`,
`tr:not(:first-of-type):hover td:not([rowspan]):hover::after {
content: "";
position: absolute;
background: rgba(0,0,0,0.2);
left: 0;
top: -5000px;
height: 10000px;
width: 100%;
z-index: -1;
}`].forEach (t => sheet.insertRule (t));
}
</script>
CSSのみの実現例、ありがとうございました。
今回は縦列がハイライトされないというご相談でした。
縦列をハイライトする方法があればご教授ください。
どうぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- Perl PERL 1 2022/04/26 14:15
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Selenium.ChromeDriverの使い方...
-
カレンダーの年月日の横に翌月...
-
【UWSC】HTML内のある部分を抽...
-
JavaScriptでテーブルの行入れ替え
-
至急!GetElementById でtdの...
-
JavaScriptで特定のtdタグにcla...
-
\\u30ad\\u30fc\\u30dc・・・と...
-
Pythonで会員サイトの自動ログ...
-
現在時刻を取得してフォームのs...
-
テキストボックスに入力された...
-
フォームの一部をPOSTで送信で...
-
this.formがundefined
-
正規表現で複数マッチ条件で悩...
-
複数のフォームを一括で自動送...
-
クリックさせたいが、click()が...
-
【掲示板の機能】投稿時にサイ...
-
追加ボタンを押した際に ok ボ...
-
クリック→フォーカスのある場所...
-
フォームで入力した値を別のフ...
-
Javascript checkboxの入力チェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイパーリンクを別ウインドウ...
-
マウスをブラウザの外に出した...
-
JavaScriptで特定のtdタグにcla...
-
特定<table>内の<td>の色を変える
-
一覧から選択した行の行番号を...
-
tableの任意行にfocusをあてる
-
プルダウンで選択すると、DBの...
-
至急!GetElementById でtdの...
-
【UWSC】HTML内のある部分を抽...
-
javascript クリックすると、あ...
-
jsで質問です。 displayプロパ...
-
javascriptで質問です。 displa...
-
クリックされた罫表セルの行番...
-
テーブルの変数について
-
別ページからOnclickでテーブル...
-
スクロールバーの表示位置を変...
-
JavaScriptでテーブルをクリッ...
-
Selenium.ChromeDriverの使い方...
-
Excelで作ったhtmlファイルのサ...
-
チェックボックスにチェックが...
おすすめ情報
babu_babu_babooさんのCSSで背景色を付けるやり方を試行錯誤してみたところ、縦列が反映されないのはこちらの環境要因のことでした。tableにposition: absolute;を加え16進指定にすることで解決しました。
お知恵をいただき本当にありがとうございました。