beim verlassen Layer ausblenden

So mal sehen ob ich hier mit meinem Problem richtig aufgehoben bin ...

Es geht um das ein- ausblenden von Menüs. Kurze Beschreibung des Projektes. Ein Kunde will seine Referenzen sortieren. Bisher war es so das ich n Auswahlmenü hatte in dem dann stand Objekt1, Objekt2. Wenn jetzt auf Objekt2 geklickt wurde, wurde per PHP ne SQL Anweisung zum Updaten der Tabelle gesendet.

Um das ganze ein wenig visueller zu machen, klappt sich jetzt ein DIV auf, in dem Bilder der jeweiligen Referenzen sind. Beim klick auf ein gewünschtes Bild, läuft wieder das ganze PHP Script runter.

Das Problem liegt aber in den Ebenen. Ich habe eine Schaltfläche in jedem Objekt die „verschieben“ heißt. Beim Klick darauf öffnet sich der entsprechende Layer

Code:
function ShowLayer(layerid,show)
{
	
var Layer;
Layer = "Layer" + layerid;
	

If(show == “on”){
document.getElementById(Layer).style.display = '';
} 
elseIf(show == “off”){
document.getElementById(Layer).style.display = 'none';
}
	
}

Damit aber nicht die ganze Seite voll geöffneter Layer ist, dachte ich mir, setze ich in den Layer ein onMouseOut mit dem Verweis auf eine Funktion die den gewünschten Layer wieder ausblendet.

HTML:
<div id="Layer5" class=“layer_attribute“ onMouseOut=“ShowLayer('5’,’off’);“> hier steht die Auswahl </div>

Idee war vielleicht okay aber in der Praxis nicht ganz so optimal denn sobald ich innerhalb des Layer über ein Bild( Bild der Referenz ) fahre, scheint das auch schon als ein onMouseOut interpretiert zu werden und der Layer wird ausgeblendet

Ich hab mir schon überlegt evtl. mittels onmousemove im Body-Tag die Funktion wieder aufzurufen. Dann halt aber alle Layer betreffend. Oder gibt es da komplett andere Lösungsansätze ? Wer ganz nett wenn da jemand n Denkanstoß hätte
 
Am Bild liegt es eher nicht, denn Events werden in der Dokumentstruktur weitervererbt.

Wahrscheinlich wird es dort irgendein "Niemandsland" geben, welches nur kurz überfahren wird, aber schon für das mouseout sorgt. Für gewöhnlich wird soetwas geregelt, indem man die Funktion für das mouseout zeitverzögert ausführt. In der Funktion für mouseover löscht man dann diesen verzögerten Aufruf wieder per clearTimeout()
 
Hab jetzt mal deinen Hinweis berücksichtigt und im DIV sämtliche 'MouseOver' entfernt.
Jetzt steht zu Testzwecken nur noch

HTML:
ein kleiner Testtext <br>
<span>ein kleiner Testtext</span><br>
<a href="#">ein kleiner Testtext</a><br>

in dem angezeigten Layer. Das Ergebnis dabei ist, fahre ich über den ersten Text, bleibt der Layer angezeigt, aber schon bei <span>, wird er ausgeblendet

Habe dann in der Funktion auch mal clearTimeout(); mit eingefügt aber das Ergebnis bleibt irgendwie das selbe :mad: ... es ist doch ein Kreuz ;)
 
Sooo ich, der "Javascript-Crack" vom Dienst habe mir jetzt etwas zurechtgewuschtelt was so aussieht.

Habe eine Funktion Hideall() gebastelt welche so aussieht.
PHP:
	function hideall()
	{
	for(nr=0;nr< document.getElementsByTagName('div').length;++nr) {
		document.getElementsByTagName('div')[nr].style.visibility='hidden';
 		}
	}
Ist vielleicht nicht verkehrt denn die Referenzen sind ja dynamisch ausgebaut und so werden generall alle ausgeblendet.

in den Layern stehen jetzt folgende Anweisungen :

HTML:
onMouseMove="einAusBlenden('Layer5','EIN');" onMouseOut="hideall();"

scheint zu funktionieren. Ob das so sauber elegant gelöst ist vermag ich nicht einzuschätzen, deswegen : bessere, saubere Lösungen sind nach- wie vor ausdrücklich erwünscht =)
 

Neue Beiträge

Zurück