# onClick und Hintergrundwechsel, aber...



## PaRADoX (28. April 2004)

Hallo Leute,
also erstmal der Code:


```
<tr height="20" onmouseover="this.bgColor='#F4F8FD'; menu_on('leistungen'); window.status='Leistungen';return true;" onmouseout="this.bgColor=''; menu_off('leistungen'); window.status='';">
<td width="129" align="right" style="cursor: hand;" onclick="showhide('div1'); this.bgColor='#F4F8FD';"><b>Leistungen</b><img src="images/spacer.gif" width="5" height="1"></td><td width="1" bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="1"></td><td width="5" bgcolor="#9FAFBC"><img src="images/menu_off.gif" width="5" height="20" name="leistungen"></td>
</tr>
<tr height="1">
<td colspan="3" bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="1"></td>
</tr>
</table>
<div id="div1" style="display: none;">
<table width="135" cellspacing="0" cellpadding="0" border="0">
<tr height="20" onmouseover="this.bgColor='#F4F8FD'; window.status='Design';return true;" onmouseout="this.bgColor=''; window.status='';">
<td width="135" align="right" colspan="3" style="cursor: hand;" onclick="location.href='#';">Design<img src="images/spacer.gif" width="11" height="1"></td>
</tr>
<tr height="1">
<td colspan="3"><img src="images/spacer.gif" width="1" height="1"></td>
</tr>
<tr height="20" onmouseover="this.bgColor='#F4F8FD'; window.status='Programmierung';return true;" onmouseout="this.bgColor=''; window.status='';">
<td width="135" align="right" colspan="3" style="cursor: hand;" onclick="location.href='#';">Programmierung<img src="images/spacer.gif" width="11" height="1"></td>
</tr>
<tr height="1">
<td colspan="3"><img src="images/spacer.gif" width="1" height="1"></td>
</tr>
<tr height="20" onmouseover="this.bgColor='#F4F8FD'; window.status='Webhosting';return true;" onmouseout="this.bgColor=''; window.status='';">
<td width="135" align="right" colspan="3" style="cursor: hand;" onclick="location.href='#';">Webhosting<img src="images/spacer.gif" width="11" height="1"></td>
</tr>
<tr height="1">
<td colspan="3" bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="1"></td>
</tr>
</table>
</div>
```

Und nun zu meinem Problem. Also wie ihr seht wird beim MouseOver in der TD die Hintergrundfarbe gewechselt und die kleine Grafik. Funktioniert auch 1a. Wenn ich auf den Link klick und der DIV-Inhalt angezeigt wird, dann bleibt der Hintergrund der TD auch wie gewünscht in der Farbe, aber:

1. Die Grafik bleibt nicht wie beim Mouseover
2. Wenn ich das Menü wieder "zumache" dann bleibt die Hintergrundfarbe immer noch dieselbe

...wie kann ich die Probleme lösen? Also wie kann ich beim onclick-Event die Grafik mitwechseln lassen und wie kann ich beim schließen des Menüs eine andere Hintergrundfarbe einbauen? Sorry, aber bin nicht so die Javascript-Leuchte und die Suche hat mich auch nicht weitergebracht! Danke für eure Hilfe!


----------



## PaRADoX (28. April 2004)

24 Hits und keiner hat einen Rat!?  Ich weiß ihr könnt nicht hexen aber ich hab die ganze Zeit rumprobiert... Naja, jetzt weiß ich nicht mehr was ich machen soll... Aber vielleicht findet sich ja noch jemand der mir helfen kann. Nochmal SORRY wegen meine Ungeduld!


----------



## PaRADoX (29. April 2004)

Hat wirklich keiner einen Rat für mich!?


----------



## PaRADoX (30. April 2004)

Hallo? *verzweifel*  

Mit onblur usw funktioniert das auch nicht!  

Bitte helft mir!


----------



## PaRADoX (1. Mai 2004)

Leute?!


----------



## PaRADoX (1. Mai 2004)

Das macht richtig Spaß mit sich selbst zu schreiben! 

Spaß bei Seite, kann wirklich niemand helfen? Hier sind doch bestimmt ein paar Javascript-Pro's die wissen wie ich mein Problem lösen kann, oder?


----------



## Sven Mintel (2. Mai 2004)

Hallo PaRADoX....

1.)Die Tutorials-Glaskugel ist gerade beim TÜV... es wäre daher nicht übel, wenn du auch den Javascript-Anteil deiner Seite posten könntest.

2.)Eigene Beiträge zu pushen, ist nicht sehr beliebt... noch dazu kontraproduktiv.... 
Hättest du das nicht getan, würde dort in der Beitragsübersicht immer noch eine 0 stehen, und es hätte bestimmt schon jemand geantwortet.
So denkt man aber, dass dir bereits geholfen wird.... und schaut nicht unbedingt hinein

du siehst also... manchmal ist weniger mehr... ich zumindest schau mir zuerst die Beiträge mit 0 Antworten an


----------



## PaRADoX (2. Mai 2004)

Sorry für meine Ungeduld, aber man sitzt dran und kommt nicht weiter und ist kurz vorm verzeifeln... Dann kommen immer wieder neue Threads im Forum und diese werden natürlich sofort beantwortet und da ist man doch ein wenig gefrustet! Aber naja, ich kann ja auf dich bauen! Hast mir bei meinen alten Problemen auch super geholfen!  

OK, jetzt wie gewünscht der Javascript Teil meiner Seite (hoffentlich kommt deine Glaskugel durch   ):


```
var n;
var linkover = new Image();
linkover.src = "img/menu_on.gif"
var linkout = new Image();
linkout.src = "img/menu_off.gif"
function menu_on(n)
{
eval("document."+n+".src = linkover.src;")
}
function menu_off(n)
{
eval("document."+n+".src = linkout.src;");
}

function showhide(id) {
if(document.all[id].style.display=="none") {
document.all[id].style.display="";
} else {
document.all[id].style.display="none";
}
}
```

Nochmals SORRY! Ich gelobe Besserung!  Ich hoffe du kannst mir weiterhelfen... Schonmal Danke!


----------



## Sven Mintel (2. Mai 2004)

Moin 

das kann so nicht funktionieren, da du alles einzeln machst....

du änderst einmal direkt in der <tr> die Farbe, dann rufst du dort 2 Funktionen auf, welche das Bild jenachdem ändern, und in der <td> wird dann noch das
<div> angezeigt/versteckt .... jeder macht da seins, und keiner achtet drauf, was der andere macht(ist ja wie auf Arbeit )

Daher ist es angebracht, alle zusammenarbeiten zu lassen... in einer einzigen Funktion...
welche prüft, ob das Menu gerade angezeigt wird, und jenachdem handelt.

Da hier sowieso keiner weiter hineinschaut, pack ich mal nen Lösungsansatz in nen Anhang... Erläuterungen dazu hab ich mit hineingeschrieben.


----------



## PaRADoX (3. Mai 2004)

Das wäre echt klasse von dir!  Du weißt ja das ich nen Javascript  bin!


----------



## Sven Mintel (3. Mai 2004)

Ooops.....

hab ich wohl vorhin was vergessen


----------



## PaRADoX (3. Mai 2004)

Ahja, Fatalus der ultimative Java-Guru!  Super Sache, funktioniert 1a! VIELEN DANK!

ABER... (musste ja sein *g*) Wie mache ich das bei Links die kein DIV-Layer öffnen. Ich habe als "Einstellung" 1 genommen aber jetzt wird die Grafik nicht mehr aktiviert wie bei der "Einstellung" 2. Verstehst du wie ich das meine!?

Ahso, wenn ich auf einen Link klicke dann schließt sich das Menü wieder automatisch, also der geöffnete DIV-Layer. Kann man das ändern oder geht das nicht? Ist zwar nicht schlimm aber würde besser aussehen!? 

Ansonsten ne feine Sache! Nochmal vielen Dank!


----------



## Sven Mintel (4. Mai 2004)

Moin...

zum zweiten Problem.... da ersetze in function paradox() jene Zeile:

```
if(paradox.arguments.length==5){document.location.href=paradox.arguments[4];}
```
durch diese:

```
if(paradox.arguments.length==5){document.location.href=paradox.arguments[4];return;}
```

zum ersten Problem:
das ist in dem Script so nicht vorgesehen...und stand so auch nicht in der Seite.
 Du kannst ja erstmal nen dummy-<div> irgendwo in die Seite packen... ohne Inhalt.
dieses lässt du dann eben anzeigen/verstecken...
Falls du mit deiner Entscheidungsfindung, was alles in SAchen Menu passieren soll, zu einem Endergebnis gelangt bist, guck ich da
gerne nochmal hinein und ändere das... da kommen ja sicher noch ein paar "aber"


----------



## PaRADoX (4. Mai 2004)

Nochmal vielen Dank, klappt jetzt 1a!

*Entscheidungsfindung v1.1 BETA*
OK, also ich hab mir mal Gedanken gemacht und hoffe mal das ich jetzt alles aufgeschrieben habe was das Menü machen soll. Also, so wie es jetzt schon ist, ist es auch schon super aber...

Der "normale" Menüpunkt (ohne DIV-Layer) soll wenn er aktiviert ist wie beim Mouseover (also mit anderer BG-Farbe, aktivierte Grafik, Statuszeilentext...) sein. Wenn dann ein anderer Link angeklickt wird, soll automatisch der Zustand vom Mouseout sein.

Der "unnormale" Menüpunkt (mit DIV-Layer) ist super wie er ist!

Der Unterpunkt von dem "unnormalen" Menüpunkt soll dann auch sein wie er ist, also mit wechselnder BG-Farbe... ABER wenn man dieses anklickt bleibt er aktiviert, wenn man einen anderen Link anklickt soll automatisch der Zustand vom Mouseout sein.

Ich hoffe du verstehst wie ich das meine... Is ein wenig verwirrend geschrieben! 

Bei Fragen einfach fragen! 


Ahso, wie mache ich das bei nem Menü (ohne DIV-Layer) wo ich keine onmouseover-Grafik usw brauche, halt nur ne andere BG-Farbe mit Statuszeilentext. Also es soll aber auch so sein wie beim anderen Menü, wenn angeklickt dann soll's wie beim onmouseover sein und und wenn ne andere Zelle angeklickt wird dann automatisch wieder wie beim mouseout.

SORRY nochmal für die verwirrenden Beshreibungen!  Hoffentlich bist du hintergestiegen was ich von dir will!


----------



## PaRADoX (5. Mai 2004)

So, hab mir nochmal Gedanken gemacht aber mir ist nichts mehr eingefallen... Wie gesagt, bei Verständnisproblemen einfach fragen!


----------



## Sven Mintel (6. Mai 2004)

Mal schauen, vielleicht komm ich ja heut dazu.


----------



## PaRADoX (6. Mai 2004)

> _Original geschrieben von fatalus _
> *Mal schauen, vielleicht komm ich ja heut dazu. *



Das wäre echt genial! Schonmal vielen Dank im voraus


----------



## Sven Mintel (7. Mai 2004)

So dann...


----------



## PaRADoX (7. Mai 2004)

Super Klasse! Du bist echt der ultimative Javscript-Guru! *anbeet*

ABER (du wusstest es, oder!? *g*) Wo muss ich das ;return; reinhauen damit das Menü wieder offen bleibt? Hab nach den alten Zeilen gesucht aber nichts gefunden... Wenn du deswegen extra was neuschreiben musst dann brauchst du es nicht, ist ja nur wegen der Optik! 

NOCHMAL VIELEN HERZLICHEN DANK! WIRKLICH KLASSE!

P.S. Bist ja nen sehr nachtaktiver Mensch was!?  Aber naja, Morgenstund hat Gold im Mund...


----------



## Sven Mintel (7. Mai 2004)

Mmmh.... bei mir bleibt das Menu offen, solange man nicht erneut auf den Menupunkt Level1 klickt.... ein return muss da nirgends hin.


----------



## PaRADoX (7. Mai 2004)

Ne ich meinte wenn man allgemein woanders klickt... Aber ist von der Logik auch ein wenig komisch... Hmmm... Naja, wenn dies einfach realisierbar ist dann sag mir bitte was ich ändern muss, ansonsten hab ich Pech gehabt! 

NOCHMAL VIELEN DANK! BIN ÜBERGLÜCKLICH!


----------



## Sven Mintel (7. Mai 2004)

Wenn du damit meinst, dass du jetzt mehrere Level1-Menupunkte hast, und sich beim Klicken auf eines davon ein anderes schliesst.....

dann suche mal im Skript jenes:

```
uno1=1;
```
....steht ziemlich weit oben..... und ersetze es durch dieses:
	
	
	



```
uno1=0;
```
....


----------



## PaRADoX (9. Mai 2004)

Vielen Dank! Klappt wie immer 1a!  SUPER SACHE! VIELEN DANK NOCHMAL!

P.S. Sorry aber konnte nicht eher antworten!


----------



## PaRADoX (12. Mai 2004)

Damn, hab was verschwitzt... SORRY das es mir erst jetzt auffällt aber naja...

Wie mache ich es das ich für jeden Link eine eigene MouseOverfarbe einstellen kann? Also das es so ungefähr ausschaut:

onmouseover="init_events(this,'leistungen','Design','#',2,0,0,#FF0000)"

oderso halt. Dürfte (hoffentlich) schnell zu machen sein. Wenn nicht dann habe ich wohl Pech gehabt. Nochmal 1000 Dank für das tolle Skript!


----------



## Andreas Gaisbauer (12. Mai 2004)

Ich war mal so frei und habs dir schnell angepasst. 

@Fatalus: Schau bitte nochmal "drüber" nicht das ich dir irgendwo in eine wichtige Funktion reinpfusche (denke aber nicht). Tolles Skript gefällt mir ausgesprochen gut, aber über deine Quellcode Formatierung sollten wir uns nochmal unterhalten 

bye


----------



## PaRADoX (12. Mai 2004)

> _Original geschrieben von Andreas Gaisbauer _
> *Ich war mal so frei und habs dir schnell angepasst.
> 
> @Fatalus: Schau bitte nochmal "drüber" nicht das ich dir irgendwo in eine wichtige Funktion reinpfusche (denke aber nicht). Tolles Skript gefällt mir ausgesprochen gut, aber über deine Quellcode Formatierung sollten wir uns nochmal unterhalten
> ...



Vielen Dank Andreas,
ABER (musste sein  ) mit deinem Code ändert sich die Farbe von dem Link (super coole Idee! BITTE UNBEDINGT EINGEBAUT LASSEN) und nicht von der TD. Es soll für jede Zelle die Hintergrundfarbe einstellbar sein (für den Mouseover). Hoffe du verstehst mein gebrabbel.


----------



## PaRADoX (13. Mai 2004)

Ahso nochwas, wenn ich einen 1,1,1 Menüpunkt öffne (also mit DIV-Layer) und ich wieder über den Link mit der Maus gehe wird mir der Statuszeilentext auch als ALT-Tag ausgegeben... Wieso ist das so, wo kann ich das ändern?


----------



## Sven Mintel (13. Mai 2004)

@PaRADoX


> Damn, hab was verschwitzt... SORRY das es mir erst jetzt auffällt aber naja...



.... daher eine Reihe von Postings vorher von meiner Seite in nunmehr berechtigter Vorahnung:


> Falls du mit deiner Entscheidungsfindung, was alles in SAchen Menu passieren soll, zu einem Endergebnis gelangt bist, guck ich da gerne nochmal hinein



... und mein daraus nunmehr resultierendes:
*Ebenfalls SORRY*
... denn etwas zu tun ist zeitaufwendiger als sich etwas zu wünschen, und es gibt genug andere Dinge, deren ich ebenfalls meine Zeit zu widmen gedenke

Abgesehen davon geht das Motto Wunsch->Ausführung etwas am Sinn des Boards vorbei(woran ich in diesem Fall nicht unschuldig bin)... versuche doch, dich selbst mit der Materie zu beschäftigen, das macht dir auf Dauer bestimmt mehr Spass, als zu fragen, ob dir jemand etwas ändern kann- und Hilfe bei der Erkenntnisfindung findest du hier allemal


....Was den title der Links betrifft... das lässt sich nicht abstellen...(zumindest nicht, wenn das Skript funktionieren soll), denn darüber erkennt das Skript den Zustand des jeweiligen Links.

@Andreas:
Hiermit gelobe ich Besserung:-(
(Die virtuellen Finger krampfhaft am Kreuzen hindernd)


----------



## PaRADoX (13. Mai 2004)

Kannst mir denn keinen Tip geben?!


----------



## PaRADoX (14. Mai 2004)

Bitte nur einen kleinen Tip, ich bin doch blutiger Anfänger auf diesem Gebiet!


----------



## Sven Mintel (14. Mai 2004)

Der Aufruf von weiter oben ist schon mal nen guter Anfang, allerdings muss der Farbwert in Anführungszeichen, da es sich dabei um eine Zeichenkette handelt:

```
onmouseover="init_events(this,'leistungen','Design','#',2,0,0,'#FF0000')"
```

dann musst du die Funktion init_events() ändern, welche die Events incl. Parameter den Links zuweist.

Zum einen musst du den neuen Parameter bei der Definition der Funktion hinzufügen, damit er innerhalb der Funktion verarbeitet werden kann:

```
function init_events(obj,id,status,link,level,showhide,img,bgc)
```
Innerhalb der Funktion musst du den 3 dort neu erzeugten Funktionen diesen neuen Parameter zuweisen:

```
over=   new Function("f1","paradox(this,'over','"+id+"','"+link+"',"+level+","+showhide+","+img+",'"+status+"','"+bgc+"');"+statusIn);
//....usw.
```
damit diese Farbwerte dann auch verwendet werden, sollte es reichen, wenn du in Funktion paradox() das zweite Array-Element durch "bgc" ersetzt(diesmal ohne Anführungszeichen, da es sich um den Namen einer Variable handelt)


----------



## PaRADoX (14. Mai 2004)

OK, den einfachen Teil hab ich verstanden bloß ich bekomme das nicht mit dem zweiten Array-Element gebacken. Welches ist gemeint? Dies hier:

if(!document.getElementById){return;}
if(isNaN(arrState[id][0])){arrState[id].unshift(0,showhide,img);}
colors=new Array('transparent','#F4F8FD');
switch (evt)

SORRY aber hab echt kein Plan von Javascript! 


EDIT:
Das wäre doch das zweiter Array, oder?!

colors=new Array('transparent','*#F4F8FD* ');

Da habe ich bgc reingehauen, aber es  net!?


----------



## Sven Mintel (15. Mai 2004)

ja... dieser Array war gemeint.
Der muss jetzt so aussehen:

```
colors=new Array('transparent',bgc);
```

Wenn du die anderen Sachen auch gemacht hast, dann sollte es gehen(und es geht)

Vielleicht hast du irgendwo was von dem vergessen, oder einen Syntaxfehler, aber es bringt halt nix, wenn du nicht weisst wo, weil du nicht weisst, warum was wo steht.... 

Wenn ich dir jetzt wieder alles Drag&Drop-fertig serviere, hilft dir das nur soweit, dass es dann funktioniert.... schlauer daraus wirst du dann immer noch nicht-->und das ist der Sinn des Boards, Skriptsaugstationen gibts genug im Web.
Daher eben... wenn du es nicht verstehst, versuche es verstehen zu *lernen*.


----------



## PaRADoX (15. Mai 2004)

Nenn mich dumm oder sonstwas aber ich bekomme es nicht hin! Keine Ahnung warum!  Ich verzeifeln noch! *heul*

Also ich habe alles wie in deinem obrigen Post geändert, den Array habe ich auch geändert, aber es funktioniert nicht!? Wie kann man rausfinden ob es ein Syntaxfehler ist oderso?

Und muss ich bei:
*function paradox(obj,evt,id,link,level,showhide,img,status)* 
auch:
*function paradox(obj,evt,id,link,level,showhide,img,status,bgc)* 
einfügen?

Und muss ich überall:
*
over=   new Function("f1","paradox(this,'over','"+id+"','"+link+"',"+level+","+showhide+","+img+",'"+status+"');"+statusIn);
out=    new Function("f2","paradox(this,'out','"+id+"','"+link+"',"+level+","+showhide+","+img+",'"+status+"');"+statusOut);
click=  new Function("f3","paradox(this,'click','"+id+"','"+link+"',"+level+","+showhide+","+img+",'"+status+"');");
* 
,'"+bgc+"'
einfügen oder nur beim over?

SORRY aber hab noch immer null Plan! :/


----------



## Sven Mintel (15. Mai 2004)

Im IE erscheint beim Auftreten eines JS-Fehlers ein Ausrufeszeichen in der Statuszeile. Ein Klick auf selbiges öffnet die dazugehörige Meldung
ja
überall


----------



## PaRADoX (15. Mai 2004)

tHx! Hab es endlich hinbekommen... Hatte wohl irgendwas falsch gemacht!? DANKE nochmal!


----------



## PaRADoX (19. Mai 2004)

Nabend, ich weiß das es langsam nervt aber wie bekomme ich es hin das ich die Grafik beim MouseOver definieren kann? Also das der Link so ausschaut:

init_events(this,'profil','Profil','#',1,0,1,'#F4F8FD',*'img/menu2_on.gif'*)

Die Grafik vor dem Mpouseover:

var linkout = new Image();linkout.src = "img/menu_off.gif";

Soll immer so bleiben, wäre aber natürlich geil wenn diese auch definiert werden könnte.

Also, ich habe das schon wie beim BG-Farb-Problem versucht aber leider nicht hinbekommen, also sowas probiert:

function action(obj,evt,id,link,level,showhide,img,status,bgc,imgon)

usw.

Sorry aber hab null Plan wie ich das ändern kann... Bitte um eine detailierte Hilfe!  Danke schonmal!


----------



## Sven Mintel (19. Mai 2004)

Hallo  PaRADoX 

herzlichen Glückwunsch!
Da anscheinend immer mehr Leute hier es für nötig erachten, mich auf ihre neuesten Beiträge per PN aufmerksam zu machen, habe ich mich entschieden, einen Ehrung für diese Aufmerksamkeit auszusetzen!

Du bist der erste Preisträger

Deine Trophäe:Ein warmes Plätzchen auf meiner bislang jungfräulichen Ignore-Liste


----------



## PaRADoX (19. Mai 2004)

Ich dachte da du dieses Skript geschrieben hast kannst du mir auch am schnellsten helfen!? SORRY! Da wurde mir meine Ungeduld wohl zum Verhängnis! *schnief* Aber vielleicht kann ja jemand anders helfen!  Nochmals SORRY!


----------



## PaRADoX (24. Mai 2004)

Kann keiner helfen?


----------



## PaRADoX (28. Mai 2004)

Hallo?!


----------



## Andreas Gaisbauer (28. Mai 2004)

Hi,

1) Wenn jemand helfen will, dann wird er's machen - da bringt dich das pushen nicht weiter - eher im Gegenteil... (können ist gar nicht die frage)
2) Eigentinitiative wird sehr geschätz
3) Poste dann wenigstens den aktuellen Code - NIEMAND hat lust aus deinem Dialog mit Fatalus aus einer alten Version die aktuelle zu rekonstruieren und diese zu erweitern.

bye


----------



## PaRADoX (28. Mai 2004)

> _Original geschrieben von Andreas Gaisbauer _
> *Hi,
> 
> 1) Wenn jemand helfen will, dann wird er's machen - da bringt dich das pushen nicht weiter - eher im Gegenteil... (können ist gar nicht die frage)
> ...



Ich hab es endlich selber hinbekommen!

Zu 1): Anscheinend will niemand helfen, ich hab ein paar Tage gewartet bis ich den Beitrag wieder hochgeschoben habe... Wenn ich jetzt Wochenlang warten würde, würde der Beitrag sich ja um einige Seiten nach hinten verschieben und naja, dann guckt sich den Thread keiner mehr an. Deswegen! Aber Sorry, werde ich unterlassen!

Zu 2): Hat ja geklappt! 

Zu 3): Hat sich ja auch erledigt!


----------



## Andreas Gaisbauer (28. Mai 2004)

Ok... dann schließe ich den thread jetzt - nicht das er ewig oben bleibt


----------

