Si el DIV que está tratando de expandir está dentro de otros Divs que están colapsados, tendrá que expandir los Divs de contenedores antes de expandir los Divs de los Niños para que se muestren. Por lo tanto, debe al menos llamar a algo como la función de alternar en el código principal, por ejemplo
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';
}
}
Esta es más o menos la idea, no una solución completa, ya que necesita descubrir el contenedor DIV para llamar alternar o alguna otra función para que se expanda.
EDITAR
Una forma de lograr lo que está tratando de hacer, en puro JS, sería hacer lo siguiente,
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';
}
Pero esto está relacionado con el diseño específico que ha proporcionado en su pregunta.
Una solución mejor y más genérica sería iterar a los padres hasta que se encuentre un padre específico en función del valor de la clase, por ejemplo
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';
}