У меня есть HTML-страница с основным элементом управления вкладки.Я использую JavaScript, чтобы показать и скрыть вкладки и элементы содержимого вкладок.Моя проблема заключается в том, что если я изменю видимость элемента внутри одного из элементов содержимого вкладки на «скрытый», а затем обратно на «видимый», то элемент, кажется, забывает или теряет свой родительский контейнер div и остается видимым независимо от его оригиналавидимость родителей.
Для иллюстрации возьмите следующий пример:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function hideTab(){
document.getElementById('tab1').style.visibility = 'hidden'
}
function showTab(){
document.getElementById('tab1').style.visibility = 'visible'
}
function hideContent(){
document.getElementById('tc1').style.visibility = 'hidden'
}
function showContent(){
document.getElementById('tc1').style.visibility = 'visible'
}
</script>
</head>
<body>
<a href="javascript: hideTab()">Hide Tab</a><br />
<a href="javascript: showTab()">Show Tab</a><br />
<a href="javascript: hideContent()">Hide Content</a><br />
<a href="javascript: showContent()">Show Content</a><br /><br />
<div id="tab1" style="background:yellow;width:100px">
<div id='tc1'>Content Text</div>
</div>
</body>
</html>
В IE8 нажмите «Скрыть вкладку», а затем «Показать вкладку», все работает нормально.На показанной вкладке нажмите «Скрыть содержимое», затем «Показать содержимое». Это также правильно.Теперь нажмите «Скрыть вкладку» еще раз, и вы увидите, что вкладка исчезла, но содержимое по-прежнему неправильно.
В IE8 проблема исчезает, когда я использую режим совместимости.Кроме того, я заметил, что если я удаляю элемент DOCTYPE, я не могу воспроизвести проблему.
В Chrome (мой личный фаворит) проблема остается постоянной независимо от элемента DOCTYPE.Я не пробовал это в Firefox.
Я уверен, что есть очень веская причина для такого поведения, я также уверен, что для меня будет простое решение, чтобы мои вкладки работали правильно.Я с нетерпением жду ваших комментариев.