Hi,
kann mir jemand erklären, wie ich private und public static Methoden in JavaScript beschreibe??
Ich möchte eine Klasse haben, mit 2 statischen public Methoden (Show und Hide).
In diesen Methoden muss ich auf ein statisches DIV Element zugreifen, was nur einmal existiert und nur einmal erzeugt wird. dieses kann doch dann private sein?
verstehe nicht ganz den Unterschied zwischen this.constructor, MyClass und MyClass.constructor.
Hier mein Code: (der nicht so klappt wie er soll)
function HoverMenu()
{
this.constructor.Div = document.createElement("div");
document.body.appendChild(this.constructor.Div);
this.constructor.getOffset = function(o)
{
HoverMenu.X = 0;
HoverMenu.Y = 0;
while(o)
{
HoverMenu.X += o.offsetLeft;
HoverMenu.Y += o.offsetTop;
o = o.offsetParent;
}
};
}
HoverMenu.Show = function(e, content)
{
if(!e) var e = window.event;
if(!this.constructor.Div)
{
HoverMenu();
}
var div = this.constructor.Div;
div.style.backgroundColor = "#FFFF80";
div.style.border = "1px solid #000000";
var el = e.target || e.srcElement;
this.constructor.getOffset(el);
var timer;
el.onmouseout = function()
{
timer = window.setTimeout("HoverMenu.Hide();", 200);
};
if(div.firstChild)
{
div.removeChild(div.firstChild);
}
div.innerHTML = content;
div.onmouseout = function()
{
timer = window.setTimeout("HoverMenu.Hide();", 200);
};
div.onmouseover = function()
{
clearTimeout(timer);
};
div.style.position = "absolute";
div.style.visibility = "visible";
div.style.left = HoverMenu.X - div.offsetWidth - 5 + "px";
div.style.top = HoverMenu.Y + "px";
};
HoverMenu.Hide = function()
{
var div = this.constructor.Div;
div.style.visibility = "hidden";
};
Was ich möchte ist folgendes: Ich möchte mit HoverMenu.Show(event, "Inhalt") ein kleines Popup links neben dem aufrufenden Element öffnen. Dafür soll immer dasselbe DIV genommen werden, nur mit anderem Inhalt.
Beim ersten Show soll daher geprüft werden, ob das DIV schon angelegt wurde. Wenn nicht soll sie den Konstruktor, nämlich HoverMenu() aufrufen, in der das DIV angelegt wird und auch die statische private Methode getOffset.
Leider klappt das alles nicht so. in der nächsten Zeile (var div = this.constructor.Div;) ist div == null.
Jemand Tipps? also auch zum generellen Umgang mit private und public Methods...
Kann ich die Show Methoden zB nicht auch innerhalb der HoverMenu() function einbetten mit this.constructor.Show = function(){...} ??
Gruß
Christian