Я хотел бы переключить видимость большей части HTML с помощью Javascript, который также содержит свойства display: <value>
.Предотвращение наследования стиля «отображения» при настройке стиля с использованием Javascript
Проблема в том, что установка внешнего свойства отображения с использованием Javascript также устанавливает внутренние свойства отображения.
Учитывая следующие CSS:
.zapfenintermeddivisionrow {
vertical-align:top;
display:none;
}
.divisionColumn[data-division=true][data-boxed=true] {
border: 1px solid black;
display: inline-block;
float: left;
}
HTML:
<tr class='zapfenintermeddivisionrow'>
<td class='zapfendividendintermed'>
<div class="divisionColumn" data-division="true" data-boxed="true">7<br />3<br /><br /><br /><br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">2<br />2<br />0<br /><br /><br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">5<br /><br />5<br />1<br /><br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">7<br /><br /><br />7<br />1<br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">6<br /><br /><br /><br />6<br />0<br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">0<br /><br /><br /><br /><br />0<br />0<br /></div>
</td><td>:</td><td>4</td><td>=</td><td>181440</td>
</tr>
и Javascript:
function changeIntermediate() {
var items = document.getElementsByClassName('zapfenintermeddivisionrow');
for(i = 0; i < items.length; i++) {
items[i].style.display = (getComputedStyle(items[i]).getPropertyValue('display') == 'none') ? 'inline' : 'none';
}
}
document.getElementById('toggleallintermedsteps').addEventListener('click', changeIntermediate);
Javascript изменяет вложенную стиль .divisionColumn (который имеет дисплей: встроенный -box) на «inline». Кажется, что значение унаследовано дочерними элементами.
Зачем устанавливать значение отображения внешнего класса, распространяемого во внутренний класс, когда оно исключается из CSS? Как это предотвратить?
Почему бы вам (повторно) не установить CSS внутренних элементов (через javascript я имею в виду)? –
Под «значением отображения внешнего класса, распространяемого во внутренний класс» вы имеете в виду при проверке элемента или визуально? – chakrit
Вместо изменения свойства 'display' в JS вы можете просто добавить класс (например,' .hidden') и стиль. Тем не менее, «установка внешнего свойства отображения с использованием Javascript также устанавливает внутренние свойства отображения» не соответствует действительности. Изменение свойств стиля родительских элементов никак не влияет на свойства дочерних элементов: http://jsfiddle.net/Wq5Yc/ – powerbuoy