login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Show/Hide function i.c.m. cookies

Offline acorna - 09/01/2008 15:19
Avatar van acornaNieuw lid Voor een website ben ik op zoek naar een script dat de show/hide functie combineert met cookies.

 Korte toelichting
Op de website worden verschillende blokken getoond, die de bezoeker in- en uit kan klappen (bijv. met persoonlijke bookmarks, nieuws e.d.). Nu is het de bedoeling dat met een cookie onthouden wordt welke blokken de bezoeker ingeklapt heeft en welke zijn uitgeklapt.

 Voor de Show/Hide functie maak ik gebruik van het script van Bladin (http://www.site...amp;id=200). Dit is het enige script dat ik aan de praat kreeg met meerdere blokken.

 Voor de cookie had ik een goed script gevonden, maar helaas krijg ik het niet werkend met meerdere blokken. Nu heb ik al een aantal dingen geprobeerd, maar niets lukt.

Dit is het script dat ik graag zou willen gebruiken:

  1. <script type="text/javascript">
  2. <!--
  3. var state;
  4. window.onload=function() {
  5. obj=document.getElementById('inhoud');
  6. state=(state==null)?'hide':state;
  7. obj.className=state;
  8.  
  9. document.getElementById('link').onclick=function() {
  10. obj.className=(obj.className=='show')?'hide':'show';
  11. state=obj.className;
  12. setcookie();
  13. return false;
  14. }
  15. }
  16.  
  17. function setcookie() {
  18. exp=new Date();
  19. plusMonth=exp.getTime()+(31*24*60*60*1000);
  20. exp.setTime(plusMonth);
  21. document.cookie='State='+state+';expires='+exp.toGMTString();
  22. }
  23.  
  24. function readcookie() {
  25. if(document.cookie) {
  26. state=document.cookie.split('State=')[1];
  27. }
  28. }
  29. readcookie();
  30. //-->
  31. </script>


Kan iemand mij helpen met aanpassen van dit script? Bij voorbaat dank !!!  

4 antwoorden

Gesponsorde links
Offline Stijn - 09/01/2008 15:37
Avatar van Stijn PHP expert Werkt die code echt voor meerdere blokken? Ze moeten allemaal het ID 'inhoud' hebben. Daarnaast maak je geen gebruik van CSS omdat display in CSS handig is voor hide/show met javascript. Je moet dus verschillende ID's hebben.

Je cookie moet ook naast de state van de block ook nog eens de ID hebben van de block. Stel dat je 3 ID's hebt: 'menu' , 'account' , 'sponsors' dan kan je cookie er als volgt uitzien:

Blocks=menu,1,account,0,sponsors,0

1 is dan show en 0 is hide.

(geef ook nog eens het stuk HTML waarin je die javascript code toepast)
Offline acorna - 10/01/2008 12:13
Avatar van acorna Nieuw lid Beste Stijn,

Ik heb de HTML beschikbaar gemaakt via http://www.zoeken-en-vinden.nl/test/showhide.htm.

Zoals je ziet kunnen meerdere blokken worden in- of uitgeklapt. Ze hebben dan ook allemaal hun eigen id qua image en div. Dit werkt prima, maar ik heb geen idee hoe ik dit in de cookie kan inbouwen.

Suggesties?
Offline Stijn - 10/01/2008 18:13
Avatar van Stijn PHP expert Ik zou een array maken met alle divs/images en hun state.

array schreef:
[0] => directnaar,image31,1
[1] => jouwmening,image3,1
[2] => actueelnieuws,image22,1
[3] => laatstewijzigingen,image20,1
[4] => jarig,image100,1


In je cookie, bv blocks, zal een string zijn van die array na elkaar. Je moet dus terug die array opbouwen. Dit kan je makkelijk doen met een functie. Een voorbeeldje.

  1. this.blocks = new Array();
  2.  
  3. function init() {
  4. /* Thanks to fangorn */
  5. var c = document.cookie;
  6. var start = c.indexOf('blocks' , 0) + 7;
  7. var eind = c.indexOf('blocks' , start);
  8. if(eind == -1) eind = c.length;
  9. var cookieData = c.substring(start,eind);
  10.  
  11. var parts = cookieData.split(',');
  12. //restore the data in the array
  13. var index = 0;
  14. for( var i = 0 ; i < parts.length ; i++ ) {
  15.  
  16. if( i > 0 && i%3 == 0 ) {
  17. this.blocks[++index] = parts[i];
  18. } else if( i == 0) {
  19. this.blocks[index] = parts[i];
  20. } else {
  21. this.blocks[index] += ',' + parts[i];
  22. }
  23.  
  24. }
  25.  
  26. }


Je moet dus een array variable buiten je functies maken die de toestand van je blocks bijhoud. Ik heb je de init functie gegeven. Nu moet je dus iedere keer de cookie herschrijven wanneer iemand op een plus of min duwt. Dus je huidige functie wat aanpassen en een functie cookieSchrijf(); maken.
Offline acorna - 10/01/2008 19:49
Avatar van acorna Nieuw lid Bedankt voor je reactie!

Ik begrijp de strekking van je verhaal, maar helaas is Javascript niet mijn sterkste kant.... Ik ben bang dat deze aanpassingen iets te ver gaan voor mij...  



Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.466s