前提・実現したいこと
|リンク|条件: 例|期待値: 例|イメージ|
|:--|:--:|--:|
|あり|<a> タグが続く <div> タグ|<div> の border-left-color を変更する (グレーにする)||
|なし|<a> タグが続かない <div>|div> の border-left-color を変更しない (赤のまま)| |
発生している問題
JavaScript で選択要素にクラスを付与しているが、
IE に限り、子要素に <a> タグが続いても罫線の色が変わらない。(赤のまま)
子が○○な親を特定でき、かつ IE 不具合も回避できる実装方法を探しています。 (現状は JavaScript で実装していますが、実現可能なら CSS 単独への手段変更も OK です。)
該当のソースコード
JavaScript
1 window.addEventListener('DOMContentLoaded', ()=>{ 2 document.querySelectorAll('div').forEach(x=>{ 3 var flg=(x.querySelectorAll('a').length > 0); 4 x.classList.toggle('indexLink',flg); 5 }); 6 }); 7 window.addEventListener('DOMContentLoaded', ()=>{ 8 document.querySelectorAll('th').forEach(x=>{ 9 var flg=(x.querySelectorAll('a').length > 0); 10 x.classList.toggle('indexLink',flg); 11 }); 12 }); 13 window.addEventListener('DOMContentLoaded', ()=>{ 14 document.querySelectorAll('td').forEach(x=>{ 15 var flg=(x.querySelectorAll('a').length > 0); 16 x.classList.toggle('indexLink',flg); 17 }); 18 }); 19
CSS
1a:hover { color:crimson; } 2tr.indexLevel1 { 3 background-color: #dedede; 4} 5td.indexLevel1 { 6 border-width: 0px 0px 0px 10pt; 7 border-style: none none none solid; 8 border-color: black black black crimson; 9 border-radius: 1px; 10 vertical-align: middle; 11} 12td.indexLevel1 a { 13 vertical-align: middle; 14} 15.indexLink:hover { 16 border-color:black black black gray; 17} 18 19div.tableIndex { 20 width: 100%; 21 background-color: #dedede; 22 -webkit-box-sizing:border-box; 23 -moz-box-sizing:border-box; 24 box-sizing:border-box; 25 font-weight:bold; 26 box-shadow:none; 27 position:relative; 28 padding-left:.5em; 29 line-height:1.4; 30 font-size:1.1em; 31 border-width: 0px 0px 0px 10pt; 32 border-style: none none none solid; 33 border-color: black black black crimson; 34 border-radius: 1px; 35} 36div.indexLevel1 { 37 display: flex; 38 align-items: center; 39}
HTml
1<table width="100%" class="ms-rteTable-default " cellspacing="0"> 2 <tbody> 3 <tr class="ms-rteTableHeaderRow-default indexLevel1"> 4 <td valign="middle" class="ms-rteTableHeaderLastCol-default indexLevel1"> 5 <a href="#"> 6 <h3> 7 <span class="ms-rteThemeForeColor-1-5"><strong>■Link リンクあり【table タグ】</strong></span> 8 </h3> 9 </a> 10 </td> 11 </tr> 12 </tbody> 13</table> 14<br> 15<table width="100%" class="ms-rteTable-default " cellspacing="0"> 16 <tbody> 17 <tr class="ms-rteTableHeaderRow-default indexLevel1 indexLabel"> 18 <td class="ms-rteTableHeaderLastCol-default indexLevel1"> 19 <h3> 20 <span class="ms-rteThemeForeColor-1-5"><strong>■Link リンクなし【table タグ】</strong></span> 21 </h3> 22 </td> 23 </tr> 24 </tbody> 25</table> 26<br> 27<div class="tableIndex"> 28 <div class="indexLevel1"> 29 <a href="#"> 30 <h3> 31 <strong>■Link リンクあり【div タグ】</strong> 32 </h3> 33 </a> 34 </div> 35</div> 36<br> 37<div class="tableIndex"> 38 <div class="indexLevel1"> 39 <h3> 40 <strong>■Link リンクなし【div タグ】</strong> 41 </h3> 42 </div> 43</div>
試したこと
Google Chrome や Microsoft Edge では想定通りに動く。
補足情報(FW/ツールのバージョンなど)
ターゲット環境: Internet Explorer 11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/05 02:19
2020/05/05 02:21
2020/05/05 02:42 編集
2020/05/05 03:06
2020/05/05 03:22
2020/05/05 03:29
2020/05/05 03:31
2020/05/05 05:40
2020/05/05 05:56 編集
2020/05/05 11:02