Si le div que vous essayez de développer se trouve dans d'autres divs qui sont effondrés, vous devrez étendre les divs de conteneurs avant d'élargir les divs des enfants pour qu'ils le montrent. Vous devez donc au moins appeler quelque chose comme la fonction de bascule dans le code de tête, par exemple
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';
}
}
Il s'agit à peu près de l'idée et non d'une solution complète, car vous devez déterminer le div de conteneur pour appeler la bascule ou une autre fonction pour qu'il se dilate.
ÉDITER
Une façon de réaliser ce que vous essayez de faire, en JS pure, serait de faire ce qui suit,
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';
}
Mais cela est lié à la mise en page spécifique que vous avez fournie dans votre question.
Une solution meilleure et plus générique serait d'itérer les parents jusqu'à ce qu'un parent spécifique soit trouvé en fonction de la valeur de la classe, par exemple
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';
}