Menü per Js ein bzw ausblenden

Speedrider

Grünschnabel
Hi

Ich möchte mein Menü im Acp per Js aus und einblenden können. Also das ich einzelne Kategorien ein udn ausbelden kann.

Standardt mäßig sollen alle ausgeblendet sein.


Also wenn man auf die Seite kommt das sie zugekllapt sind.

Das ganze soll auch in cookies gespeichert werden. So das man denn Browser bzw Seite verlassen kann udn man wieder drauf geht die Kategroien so sind wie man es verlassen hat.

Also wen man Cat Test einblendet und man verlässt die seite. Udn man geht z.b. nach einer Stunde wieder drauf das sie dann imemr noch ausgeblendet ist. Also imer so wie man die seite verlassen hat.

Nun es gibt ja auch Leute die kein Js haben. Nun möchte ich dort folgendes, wenn kein Js aktiviert ist oder verwendet werden kann. Das dann alle Kategorien eingeblendet sind.

Hoffe mir kann jemand helfen ich habe kA von Js.

Es sollte so sein wie im VBulletin. Nur statt eingeblendet gleich ausgeblendet wenn js aktiv und wen deaktiv eingeblendet.

Gruß Alex
 
Ehrlich gesagt, wenn du keine Ahnung von JavaScript hast, wie du sagst, ist dir bei diesem Problem nicht zu helfen bzw. wird dir niemand helfen. Wir machen hier nämlich im allgemeinen weder JavaScript-Kurse noch fertige Scripts. Sowas ist zeitaufwendig und gibts meistens nur nach Bezahlung. Und bitte denk in Zukunft auch daran, dass wir nicht Gedanken lesen können und den Aufbau deiner Seite nur erahnen solange du keine URL postest.

Ich würde dir empfehlen jedem auszublenden Bereich eine id zu geben. Per JS machst du dann mit document.getElementByID("id").style.visibility="none" innerhalb einer Schleife alle Bereich unsichtbar für die kein Cookie-Eintrag existiert. Damit löst du dein "Nur statt eingeblendet gleich ausgeblendet wenn js aktiv und wen deaktiv eingeblendet"-Problem, denn wenn JS nicht eingeschaltet wäre, wird nichts ausgeblendet.

Mit dem Befehl document.getElementByID("id").style.visibility="none" kannst du die Bereiche wieder einblenden. Jetzt brauchst du eine Funktion, die einen ausgeblendeten Bereich wieder einblendet und einen eingeblendeten ausblendet - siehe dazu auch z.B. diesen Thread. Sie muss aber zursätlich noch den Zustand des Bereiches als Cookie speichern. Womit wir bei der schwierigkeit wären:

Bei der Sache mit den Cookies kann ich dir relativ wenig helfen. Ich für meinen Teil benutze nie Cookies. Das Problem dabei ist, dass du nicht wirklich Variablen speichern kannst sondern nur einen fließenden Text, den du dann per JS wieder mühsam in deine ganzen Variablen auseinander friemeln musst. Hier kann ich dir nur die üblichen Funktionen mit denen man cookies liest und setzt geben:
HTML:
<script type="text/javascript"><!--
 function setCookie(name,value,days) {
 	if (days) {
 		var date = new Date();
 		date.setTime(date.getTime()+(days*24*60*60*1000));
 		var expires = "; expires="+date.toGMTString();
 	}
 	else var expires = "";
 	document.cookie = name+"="+value+expires+"; path=/";
 }
 
 function getCookie(name) {
 	var nameEQ = name + "=";
 	var ca = document.cookie.split(';');
 	for(var i=0;i < ca.length;i++) {
 		var c = ca[i];
 		while (c.charAt(0)==' ') c = c.substring(1,c.length);
 		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
 	}
 	return null;
 }
 
 function delCookie(name) {
 	setCookie(name,"",-1);
 }
Mit setCookie('bspcookie','bspwert','5') legst du einen Cookie an der den Namen bspcookie hat, den Wert bspwert und in 5 Tagen abläuft. Mit getCookie('bspcookie') gibt dir die Funktion den Wert des Cookies also bspwert zurück.

Mehr kann ich leider nicht für dich tun. Bleiben noch zwei Hoffnungen: Google (sowas in der Art gibts vielleicht schon als Fertigsuppe) oder andere hier im Forum( *hüstelSVEN* *hüstelMintel* - schon schlimm wenn man den Forsch im Hals hat :rolleyes: ).
 
Zuletzt bearbeitet:
In der Tutorials-Sektion findest du ein "Basic-DHTML-Menu"...damit kann man einblenden und ausblenden.

Wie du Cookies setzen und auslesen kannst, steht im Beitrag von con-f-use.

Verschaffe dir Ahnung in JS und verbinde beide Sachen zu Einem... fertitsch :-)
 
Ok danke

nun noch 2 Fragen.

Wie kann ich machen das wenn js aktiv ist das es ausgebeldendet ist wenn man reihnkommt udn wen deaktiv es auf ist.


Und leider hab ich das mit denn cokkies nicht hinbekommen.

hier mal mein Js Code

Code:
 	 <script type="text/javascript"><!--
 		 function swap(id) {
 			 NewsObj = document.getElementById("News" + id);
 			 if (NewsObj.style.display == "none") {
 				 NewsObj.style.display = "block";
 			 } else {
 				 NewsObj.style.display = "none";
 			 }
 		 }
 	  
 	  
 	 //--></script>


Hoffe ihr könnt mir helfen.
 
Also das ein- und ausblenden klappt schonmal so, wie du es dir vorstellst?

Wenn ja musst du jetzt JavaScript dazu brigen, dass es sich per Cookie merkt ob ein Bereich geöffnet ist oder geschlossen. Dazu setzt du jedesmal ein Cookie wenn der Bereich offen ist und löscht es wieder, wenn er geschlossen wird.

Die Funktion sieht dann so aus:
HTML:
function swap(id) {
       NewsObj = document.getElementById("News" + id);
       if (NewsObj.style.display == "none") {
        NewsObj.style.display = "block";
 delCookie('News'+id);
  } else {
        NewsObj.style.display = "none";
 setCookie('News'+id,'1','10')
       }
      }

Wie kann ich machen das wenn js aktiv ist das es ausgebeldendet ist wenn man reihnkommt udn wen deaktiv es auf ist.
Alle Bereiche müssen standartmäßig eingeblendet sein. Dann kannst du eine Funktion verwenden, die alle Bereiche innerhalb einer Schleife anspricht und sie ausblendet, sofern kein Cookie für sie vorhanden ist. Diese Funktion führst du dann beim Laden aus. Die Funktion könnte so ähnlich aussehen (lustig, ich hatte vor kurzem ein ganz ähnliches Problem:
HTML:
function forbereiche() {
       for(n=0;n<[anzahDerBereiche];n++) {
        Cookie = getCookie('News'+n);
        if (Cookie == null) {
         document.getElementById('News'+n).style.display = 'none';
        }
       }
      }
      
      window.onload=fornbereiche;
 
Zuletzt bearbeitet:
Ok


Nur das mit der letzten funktion hab ich noch nicht ganz verstanden.


Muss bei denn Cookies noch was gemacht werden?

Weil derzeit liest er sie ja nicht aus oder?

Hoffe du kannst mir da nochmal Helfen.
 
Ich hatte auch vorhin einen kleinen fehler gemacht. Hab's nämlich genau verdreht: Die Funktionen die ich gepostet hatte gingen davon aus, dass alle Bereich AUSgeblendet waren und haben dann die für die ein Cookie existierte eingeblendet. Du willst aber alls standartmäßig EINgeblendet haben und nur die, für die ein Cookie existiert ausgeblendet. Diesen Fehler meinerseits hab ich schonmal in meinem alten Post berichtigt.

So jetzt zu deiner Frage:

Die letzte Funktion liest die Cookies aus. Das siehst du an diesen 3 Zeilen:

1: for(n=0;n<[anzahDerBereiche];n++) { <--- Hier wird eine Schleife gestartet in der n jeweil um ein erhöht wird, bis es keine Bereiche mehr gibt (musst halt den richtigen Wert für die Anzahl der Bereiche eingeben. Die Schleife ist übrigens so gebaut, dass du hier auch gerne ne größere Zahl an Bereichen eingeben kannst, als tatsächlich existieren ohne, dass es Fehlermeldungen gibt.

2: Cookie = getCookie('News'+n); <--- Hier wird das Cookie für den Bereich mit der Nummer n ausgelsenen

3: if (Cookie == null) { <--- Hier wird geprüft, ob das Cookie existiert


P.S.
Kann es sein, dass du deine JavaScript Hausaufgaben nicht gemacht hast? :rolleyes:
 
Zuletzt bearbeitet:
Euhm nö eiegtnlcih hat es doch gestimmt. Weil Standardtmäßig sollen ja alle ausgeblendet sein, also nicht sichtbar. Dies aber nur wenn Js aktiviert ist.

Und die Berescihe werden per Datenbank erstellt. also dort steht auch die id drin.

Kann ich dann bei Anzahl an bereischen die variable reihn machen für die zählung von den Datansätzden der db also menü cats?



Was ich aber noch nicht ganz verstehe wie wird des gemacht das er vom Cokkie her weiß ob nun ausgeklappt oder eingeklappt. Er müsste doch eigentlich mit einer if abfrage überprüfen obn ein cookie vorhandne ist mit ausgeklappt oder?

Sry für diese vielen Fragen.

aber wie gesagt ich kenn mich nicht so gut aus.

War froh das ich das schonmal soweit geschafft habe.

PS:

Der Link wird per javascript aufgerufen. Also so

javascript:swap('id der Kategorie')
 

Neue Beiträge

Zurück