Если Div, который вы пытаетесь расширить, находится в других Divs, которые обрушиваются, вам придется расширить контейнерные DIV, прежде чем расширить Divs для детей, чтобы они могли показать. Так что вам нужно хотя бы вызвать что -то вроде функции переключения в коде головы, например,
window.onload = function() {
var hash = window.location.hash; // would be "#div1" or something
if(hash != "") {
toggle('CPNRE', this);/*this is an example the CPNRE value needs to be figured out*/
var id = hash.substr(1); // get rid of #
document.getElementById(id).style.display = 'block';
}
}
Это примерно идея, а не полное решение, поскольку вам нужно выяснить контейнерный Div для вызова или какую -то другую функцию для его расширения.
РЕДАКТИРОВАТЬ
Одним из способов достижения того, что вы пытаетесь сделать, в Pure JS было бы сделать следующее,
if(hash != "") {
var id = hash.substr(1); // get rid of #
document.getElementById(id).style.display = 'block';
document.getElementById(id).parentNode.parentNode.parentNode.style.display = 'block';
document.getElementById(id).parentNode.parentNode.style.display = 'block';
document.getElementById(id).parentNode.style.display = 'block';
document.getElementById(id).style.display='block';
}
Но это связано с конкретным макетом, который вы предоставили в своем вопросе.
Более лучшим, более общим решением было бы, чтобы итерация родителей, пока не найден конкретный родитель на основе значения класса, например,
HTML
/*add class value like faq-section to each div section */
<div class="FAA faq-section" id="faq1">
JS
....
if(hash != "") {
var id= hash.substr(1);
var pNode = document.getElementById(id).parentNode;
var endLoop=false;
while(!endLoop){
if(pNode.className&&pNode.className.indexOf('faq-section')!=-1){
endLoop=true;
};
pNode.style.display='block';
pNode=pNode.parentNode;
}
document.getElementById(id).style.display='block';
}