webForumDet fria alternativet

Hjälp med FAQ

JavaScript

2 svar · 441 visningar · startad av AboO

Medlem sedan juni 2002191 inlägg
Frågan#1

Jag har en FAQ-sida där man klickar på frågan, då öppnas själva svaret på frågan. Kolla på t.ex. http://www.silverklubben.se/faq.html

Scriptet ser ut så här:

function displayLayer(which) {
obj = document.getElementById(which);
obj.style.display == "block" ? obj.style.display = "none" : obj.style.display = "block";
}

Sedan använder man det det så här:

<a href="#" onClick="displayLayer('p2'); return false;">

Nu skulle jag vilja ändra på det så att när man klickar på en fråga, då ska alla öppna frågor stängas. Som det är nu kan man öppna alla frågor men jag vill alltså att bara en fråga ska kunna vara öppen samtidigt. Någon som kan hjälpa mig med det?

Medlem sedan aug. 20039 340 inlägg
#2
<script type="text/javascript">
function displayLayer(which) {
  for (var i=1, obj=document.getElementById('p'+i); obj != null; i++,obj=document.getElementById('p'+i)  ){
    if (('p'+i) == which){
      obj.style.display == "block" ? obj.style.display = "none" : obj.style.display = "block";
    }else{
      obj.style.display = "none";
    }
  }
}
</script>
Medlem sedan feb. 20034 441 inlägg
#3

Du måste loopa igenom alla dina object som kan visas/döljas. Använder du något ramverk, t.ex. jQuery?

Om du gör det och alla divar har samma classnamn, så kan du köra följande funktion:

displayLayer(which){
   $('.klassnamn').hide();
   var $obj = which;
   $(obj).show();
}

Otestat, men bör fungera...

// RED

Nu var visst nitro2k01 lite snabbare på att skriva... typiskt... :)

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)