Ergebnis 1 bis 9 von 9
  1. #1
    Avatar von AnnaBauer
    AnnaBauer ist offline Grünschnabel
    registriert
    27-08-2012
    Beiträge
    5

    Per Mausklick geänderter Button wird nicht beibehalten

    Hallo Leute,

    ich bin neu hier, also bitte nicht zu hart sein, wenn ich etwas falsch mache ^^

    Hab folgendes Problem:

    Ich hab einen Javascript-Code, der ein Bild, dass als Button dient, beim darauf klicken oder beim drüberfahren mit der Maus ändert.

    Als ich meine Seite ohne PHP gemacht habe hat alles wunderbar funktioniert, wenn ich auf den Button geklickt habe, ist das Bild verändert geblieben, solange ich auf einen anderen Button geklickt habe.
    Wenn ich auf einen Button klicke soll in einem div eine Seite reingeladen werden.
    Seitdem ich php beim Aufruf verwende
    HTML-Code:
    <a href="main.php?site=home" ...></a>
    funktioniert dies leider nicht mehr.

    Beim debuggen des Codes wird das Bild beim daraufklicken verändert, aber nach der kompletten Ausführung des Codes sieht es so aus als würde die Seite neu geladen werden und somit ist wieder das Standardbild des Buttons zu sehen.

    An was könnte dies liegen?

    Kann es sein, dass der Button geändert wird, aber dann die Seite in den div geladen wird, und dadurch ein refresh entsteht, wodurch der geänderte Button nicht bleibt?

    Liebe Grüße
    Anna

  2. #2
    Avatar von scrypter
    scrypter ist offline Haudegen
    registriert
    25-06-2011
    Beiträge
    706

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    Zitat Zitat von AnnaBauer Beitrag anzeigen
    An was könnte dies liegen?

    Kann es sein, dass der Button geändert wird, aber dann die Seite in den div geladen wird, und dadurch ein refresh entsteht, wodurch der geänderte Button nicht bleibt?
    möglich, aber mit dem halben HTML-Anker kann man Dir nicht helfen, wenn es ein javascript Problem ist

    zeig mal Deinen code oder poste einen Testlink
    fatal error: EBKAC (error between keybord and chair)

  3. #3
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    Wenn man auf einen Anker mit einem href klickt, wird die Seite natürlich neu geladen... (wenn es kein #-Anker ist)

  4. #4
    Avatar von AnnaBauer
    AnnaBauer ist offline Grünschnabel
    registriert
    27-08-2012
    Beiträge
    5

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    Hallo,

    vielen Dank erstmal für die Antworten

    hier ist mal der JS-Code:

    Code:
    <script language="JavaScript">
    
    		function MM_findObj(n, d) { //v4.0
    		  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    			d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    		  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    		  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    		  if(!x && document.getElementById) x=document.getElementById(n); return x;
    		}
    
    		function MM_nbGroup(event, grpName) { //v3.0
    		  var i,img,nbArr,args=MM_nbGroup.arguments;
    		  if (event == "init" && args.length > 2) {
    			if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
    			  img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
    			  if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
    			  nbArr[nbArr.length] = img;
    			  for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
    				if (!img.MM_up) img.MM_up = img.src;
    				img.src = img.MM_dn = args[i+1];
    				nbArr[nbArr.length] = img;
    			} }
    		  } else if (event == "over") {
    			document.MM_nbOver = nbArr = new Array();
    			for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
    			  if (!img.MM_up) img.MM_up = img.src;
    			  img.src = (img.MM_dn && args[i+2]) ? args[i+2] : args[i+1];
    			  nbArr[nbArr.length] = img;
    			}
    		  } else if (event == "out" ) {
    			for (i=0; i < document.MM_nbOver.length; i++) {
    			  img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
    		  } else if (event == "down") {
    			if ((nbArr = document[grpName]) != null)
    			  for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    			document[grpName] = nbArr = new Array();
    			for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
    			  if (!img.MM_up) img.MM_up = img.src;
    			  img.src = img.MM_dn = args[i+1];
    			  nbArr[nbArr.length] = img;
    		  } }
    		}
    	</script>
    Mein Kollege, der die Homepage vorher gemacht hat, hat den Code aus dem Internet.
    Leider weiß dieser selbst nicht genau was der Code macht, hauptsach es funktionierte.

    Mir ist beim Debuggen allerdings aufgefallen, das folgender Aufruf funktioniert (Der Aufruf ist von der alten Homepage, die mit Frames erstellt ist. target="home" ist der Frame in dem die Seite geladen wird.):

    HTML-Code:
    <p><a href="gaestebuch/gaestebuch_index.htm" onClick="MM_nbGroup('down','group1','G&auml;stebuch','homepagebuttons/gaestebuch3.png',1)" onMouseOver="MM_nbGroup('over','G&auml;stebuch','homepagebuttons/gaestebuch2.png','',1)" onMouseOut="MM_nbGroup('out')" target="home"><img name="Gästebuch" src="homepagebuttons/gaestebuch1.png" border="0" title="Gästebuch" alt="Gästebuch" onLoad="Gästebuch" width="150" height="25"></a></p>

    Der Aufruf über PHP, der die Seite in einen Div lädt funktioniert aber nicht mehr:

    HTML-Code:
    <p><a href="main.php?site=gaestebuch" onClick="MM_nbGroup('down','group1','G&auml;stebuch','homepagebuttons/gaestebuch3.png',1)" onMouseOver="MM_nbGroup('over','G&auml;stebuch','homepagebuttons/gaestebuch2.png','',1)" onMouseOut="MM_nbGroup('out')" target="_self"><img name="Gästebuch" src="homepagebuttons/gaestebuch1.png" border="0" title="Gästebuch" alt="Gästebuch" onLoad="Gästebuch" width="140" height="25"></a></p>

    Über folgendes wird die Seite dann in den Div geladen:

    HTML-Code:
    switch($_GET['site']){ 
    					...
    					case "gaestebuch": include('gaestebuch/gaestebuch_main.htm'); break; 
    					...
             }

    Es tut mir leid, das der Code oben etwas übersichtlich ist aber wie gesagt ist der nicht von mir ^^

    Nochmalige Problemerklärung:
    Bei klick auf den Button soll sich das Bild ändern und das geänderte Bild angezeigt werden bis auf einen anderen Button geklickt wird.
    Wenn ich auf den Button klicke ist im debuggen ersichtlich, dass das Bild geändert wird, aber dann auf einmal wieder das Standardbild angezeigt wird. Als würde das Fenster refreshen und sich nicht merken, das das Bild geändert wurde.

    Liebe Grüße
    Anna

  5. #5
    Avatar von scrypter
    scrypter ist offline Haudegen
    registriert
    25-06-2011
    Beiträge
    706

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    von dem veralteten script mussst Du Dich auch trennen
    es ist ja noch auf die veraltete frame-struktur der Seite ausgelegt und kann daher nicht funktionieren

    was steht in der Fehlerkonsole? und (Wo finde ich die Fehlerkonsole?) (IE: F12 => Skript => Debuggen)

    einige der Funktionen lassen sich sicherlich mit CSS (pseudo Klassen für links) erzielen

    hilfreich wäre ein Testlink und wenn Du noch mehr vom php-script und dem HTML, wie es im browser ankommt, zeigen würdest
    fatal error: EBKAC (error between keybord and chair)

  6. #6
    Avatar von scrypter
    scrypter ist offline Haudegen
    registriert
    25-06-2011
    Beiträge
    706

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    und dann unterscheiden sich die Dateinamen: gaestebuch/gaestebuch_index.htm vs. gaestebuch/gaestebuch_main.htm
    existiert die _main überhaupt?
    fatal error: EBKAC (error between keybord and chair)

  7. #7
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    JS "überlebt" einen Seitenwechsel nicht und wird bei jedem Laden zurückgesetzt. Das ist ein kleiner Nachteil, wenn man von Frame-basierten Designs (ein Frame hat die Navigation und in einem andern wird der Inhalt angezeigt) auf ein nicht-Frame-basiertes umsteigt - da du aber mit PHP arbeitest kannst du ja bei der Darstellung der Navigation einfach überprüfen, welche Seite gerade angezeigt wird und dann den entsprechenden Button entsprechend anders darstellen.

  8. #8
    Avatar von AnnaBauer
    AnnaBauer ist offline Grünschnabel
    registriert
    27-08-2012
    Beiträge
    5

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    Hallo Leute,

    vielen Dank für eure Antworten!
    Ihr habt mir schonmal sehr geholfen.

    Zitat Zitat von kkapsner Beitrag anzeigen
    kannst du ja bei der Darstellung der Navigation einfach überprüfen, welche Seite gerade angezeigt wird und dann den entsprechenden Button entsprechend anders darstellen.
    Ich bin in PHP leider noch nicht sehr gut, ehrlich gesagt hab ich noch garkeine Ahnung davon.
    Ich habs jetzt so gelöst, dass ich auf der Seite, die in den Div geladen wird, mit JS den Button ändert.


    HTML-Code:
    <head>
    ...
    <script language="JavaScript">
    function aendern(){
    parent.document.getelementByID('homebutton').src='homebuttons/home3.png';
    }
    </script>
    </head>
    
    
    <body onload="aendern()">
    ...
    </body>

    Ich mach also auf jeder Seite die man über das navi aufrufen kann einen kleinen Code, der den Button ändern.

    Ist für mich jetzt die einfachste Lösung.


    Aber könnt ihr mir trotzdem verraten wie man so ne PHP-Abfrage macht wie kkapsner meinte?

    Ich habs versucht aber hab nich ganz verstanden wie ich in PHP merke auf welchen Button geklickt wurde und von diesem dann das Bild ändere.

    Gibts da eine Abfrage wie:
    Wenn ID = ???, dann ändere Bild, wo ID = ???

    Ich muss ja irgendwie sagen von welcher ID das Bild geändert werden soll oder?

    Schonmal vielen Dank

    Liebe Grüße
    Anna

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Per Mausklick geänderter Button wird nicht beibehalten

    Du hast doch den GET-Parameter "site" (z.B. "main.php?site=gaestebuch") - diesen kannst du ja auch im PHP-Skript, das die Navigation erzeugt abfragen und dann abhängig davon das src-Attribut anders setzten.

    Wenn dir das noch nicht reicht, zeig' uns mal dein Navigations-PHP-Skript (ev. in einem neuen Thread im serverseitigen Unterforum, da das ja nichts mehr mit JS zu tun hat).

    PS: Hoffentlich sieht dein JS-Code etwas anders aus, denn du hast document.getElementById() falsch geschrieben...

Ähnliche Themen

  1. Zustand des Formulars wird nicht beibehalten
    Von kemot im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 31-03-2011, 18:30
  2. Mit JavaScript geänderter Style wird nicht beibehalten
    Von boris_michl im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 30-04-2009, 09:51
  3. klick auf button / button wird nicht übergeben
    Von originalhanno im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 05-02-2007, 17:31
  4. Speichern geänderter Daten
    Von Mannix im Forum Serverseitige Programmierung
    Antworten: 4
    Letzter Beitrag: 10-10-2006, 22:39
  5. [PHP/JS]Timer auf mausklick starten - Klappt nicht so wie ich das möchte!!!
    Von Fire-Head im Forum Serverseitige Programmierung
    Antworten: 1
    Letzter Beitrag: 03-06-2006, 00:59

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •