指定された値で列を非表示にするテーブルを開発しようとしています。別のSOの質問で説明されているソリューションを使用しています。そこでの提案の一部として、IE <8ブラウザーをサポートするには、代わりに非表示ルールを使用し、デフォルトで表示する必要があると彼らは言っています。(私のブラウザはクァークズモードです)。
次のような非表示ルールがいくつかあります。
table.Show1 .cellType2, table.Show1 .cellType3{
display:none;
}
したがって、私が期待するのはcellType2
、テーブルのが動的に変更されたcellType3
ときに非表示にすることです。className
初期値では正常に機能しますが、テーブルのclassNameが動的に変更されると、必要なセルは非表示になりますが、他のセルは元に戻りません。
IE Developer Toolを使用して調べたところ、テーブルのclassNameが正しく設定されていることがわかりました。セル要素のスタイルも調べましたが、表示ルールが設定されていないため、デフォルトで表示されると思いますが、表示されません(表示されません)。
開発者ツールで任意のスタイルプロパティを変更すると、セルが表示されているはずであることが認識され、セルが元に戻ることが最も厄介でした。
なぜスタイルが適用されないのですか?この問題の修正を手伝ってください。
編集:問題を再現するための「最小限の」コードを含めています。
JavaScript:
function typeChanged(name, id)
{
var elem = document.getElementById(id);
elem.className = name;
}
CSS:
table td
{
border-top: 1px none #000066;
border-right: 1px none #000066;
border-bottom: 1px solid #000066;
border-left: 1px solid #000066;
}
table.Show1 .cellType2, table.Show2 .cellType1{
display:none;
}
table.Show1 td,table.Show2 td
{
border-style: solid solid solid solid;
border-width: 1px;
}
table.Show1 th,table.Show2 th,table.Show1,table.Show2
{
background: transparent none repeat scroll 0% 0%;
color: #000066;
border-style: none none none none;
table-layout: fixed;
}
HTML:
<select onChange="typeChanged(this.options[this.selectedIndex].value,'mytable')">
<option value="Show1">Show1</option>
<option value="Show2">Show2</option>
</select>
<table id="mytable" class="Show1">
<tr>
<th class="cellType1">type1</th>
<th class="cellType2">type2-a</th>
<th class="cellType2">type2-b</th>
</tr>
<tr>
<td class="cellType1"><input type="text"></input></td>
<td class="cellType2"><input type="text"></input></td>
<td class="cellType2"><input type="text"></input></td>
</tr>
</table>