1k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Sehr geehrte Forenuser,

ich bin noch ziemlich neu in Javascript und bräuchte euere Hilfe für das ich einfach keine lösung finde. Auch Google und SuFu in mehreren Javascriptforen brachten mich nicht weiter.

Was will ich?
Ein Menü. Mehrere Div-Container stehen als Menüpunkte verteilt auf der Seite - feststehend. Beim anklicken eines Div-Containers sollte ein weiterer Div-Container sich von einem bestimmten Punkt aus an den feststehenden Menüpunkt Div-Container hinbewegen und dann das Fenster öffnen.

Klappt es?
Ja.

Was ist mein Problem?
Ich finde die Position des feststehenden Div-Container (Menpunkt) mittels offsetTop und offsetLeft heraus. Dann vergleiche ich jeweils die Angaben beim bewegenden Div-Container und beim feststehenden.
Sobald beide gleich sind öffnet sich das Fenster. Aber ein "Treffer" ist nur dann möglich wenn der bewegliche Div-Container ganz genau an der linken oberen Ecke des Div-Container vorbeikommt.

Was hab ich bisher alles versucht?
Alles was sinnvoll erschien, aber scheinbar nicht mehr als genug.

Was will ich?
Ich möchte das die linke obere Ecke (1px groß) zu einem etwa 10px großen Rechteck wird.


Könnt ihr mir helfen? Ich verzweifle wirklich, und sitzt schon seit über einer Woche an dem Problem.

2 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Guter Versuch, leider habe ich spätestens den "bewegenden Div" und die "linke obere Ecke" nicht mehr verstanden. Kannst du nicht einen Beispielcode posten (am besten komplett auf das Problem reduziert ohne zusätzliche Sachen) und dazu meinetwegen noch ein Bild - wie das ganze aussehen soll (hochzuladen auf z.B. www.imageshack.us)?
0 Punkte
Beantwortet von
ändere die Frage auf identische Koordinaten auf Abstand < 10

if (Math.sqrt(Math.sqr(x1-x2) +Math.sqr(y1-y2))<10) {
neue Seite
}


wobei (x1;y1), (x2;y2) die beiden Punkte in Koordinatendarstellung sind.

schneller als mit der Wurzel gehts, wenn du es bei den Quadraten belässt, also so

if (Math.sqr(x1-x2) +Math.sqr(y1-y2))<100) {
neue Seite
}


füge vorher eine (eigene) Quadratfunktion ein am Anfang deines JavaScript-Teils:
Math.sqr=function(x) {
return x*x;
}
...