![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
|
aTag = ctl do { aTag = aTag.offsetParent; leftpos += aTag.offsetLeft; toppos += aTag.offsetTop; } while(aTag.tagName!="BODY"); |
|
crossobj.left = ctl.offsetLeft + leftpos crossobj.top = ctl.offsetTop + toppos + ctl.offsetHeight |
#2
| ||||||
| ||||||
|
|
ich habe ein wenig "Sorgen" mit einem Javascript-Kalender und dessen Position. Hintergrund ist, das der Kalender an der Position erscheinen soll, an der das zugehörige Kalender-Icon steht. Das funktioniert bestens mit IE, leider aber nicht mit Firefox (3.x) Hier erstmal der Code (ist nicht von mir sondern von Tan Ling Wee, also nicht gleich hauen :-) |
|
Die Schleife ermittelt erstmal die Position des Kalender-Icons: aTag = ctl |
|
do { aTag = aTag.offsetParent; leftpos += aTag.offsetLeft; toppos += aTag.offsetTop; } while(aTag.tagName!="BODY"); |
|
Das scheint soweit zu funktionieren, leftpos und toppos sind bezogen auf das Browserfenster korrekt. |
|
Irgendwie klemmt es aber hier: crossobj.left = ctl.offsetLeft + leftpos crossobj.top = ctl.offsetTop + toppos + ctl.offsetHeight crossobj ist so belegt: crossobj=document.getElementById("calendar").style |
|
"calendar" ist ein div das mittels document.write() beim Laden in die Seite geschrieben wird: div id='calendar' style='z-index:+999;position:absolute;visibility:hidden;' |
#3
| |||
| |||
|
|
Hallo, ich habe ein wenig "Sorgen" mit einem Javascript-Kalender und dessen Position. Hintergrund ist, das der Kalender an der Position erscheinen soll, an der das zugehörige Kalender-Icon steht. Das funktioniert bestens mit IE, leider aber nicht mit Firefox (3.x) Hier erstmal der Code (ist nicht von mir sondern von Tan Ling Wee, also nicht gleich hauen :-) Die Schleife ermittelt erstmal die Position des Kalender-Icons: aTag = ctl do { aTag = aTag.offsetParent; leftpos += aTag.offsetLeft; toppos += aTag.offsetTop; } while(aTag.tagName!="BODY"); |
|
Das scheint soweit zu funktionieren, leftpos und toppos sind bezogen auf das Browserfenster korrekt. Irgendwie klemmt es aber hier: crossobj.left = ctl.offsetLeft + leftpos crossobj.top = ctl.offsetTop + toppos + ctl.offsetHeight |
#4
| |||
| |||
|
|
element.style.left/top erwartet einen CSS-Wert für diese Eigenschaften, der aus einer Zahl _und_ einer Einheit besteht. Also etwa crossobj.left = ctl.offsetLeft + leftpos + 'px'; |
#5
| ||||||||
| ||||||||
|
|
Thomas Braun wrote: [Zitat repariert] |
|
Dein primärer Ansprechpartner wäre demnach Tan Ling Wee gewesen. Es ist nämlich nicht Sinn und Zweck dieser Diskussionsgruppe, anderer Leuts' kapotte Copy-und-Pray-Scripts kostenlos zu reparieren. |
|
1. Bitte beim Posten hier 1.1. nicht Zitatzeichen zur Kennzeichnung von eigenem Quelltext verwenden, sondern Einrückungen. Sonst weiss nachher niemand mehr, wer was geschrieben hat. |
|
1.2. nicht Tabulator-Zeichen verwenden, sondern Leerzeichen. |
|
2. Die Iteration über offsetParent ist unzuverlässig und in den meisten Fällen nicht nötig. |
|
Wenn man es doch macht, sind Ränder, Rahmen und Innenabstände (Paddings) zu berücksichtigen. |
|
Denn die style-Eigenschaft implementiert das CSSStyleDeclaration-Interface, und in CSS benötigen Längenangaben != 0 eine Einheit (hier: Pixel = "px"). |
|
`z-index:+999' ist zwar syntaktisch korrekt, ich würde jedoch das unübliche `+' weglassen. |
#6
| |||||
| |||||
|
|
Thomas 'PointedEars' Lahn wrote: Thomas Braun wrote: [Zitat repariert] Welches Zitat? |
|
Dein primärer Ansprechpartner wäre demnach Tan Ling Wee gewesen. Es ist nämlich nicht Sinn und Zweck dieser Diskussionsgruppe, anderer Leuts' kapotte Copy-und-Pray-Scripts kostenlos zu reparieren. Keiner hier wird zu irgendwas gezwungen. |
|
1.2. nicht Tabulator-Zeichen verwenden, sondern Leerzeichen. Mist, cut and paste - hatte ich nicht bemerkt. 2. Die Iteration über offsetParent ist unzuverlässig und in den meisten Fällen nicht nötig. Die alternative wäre? |
|
`z-index:+999' ist zwar syntaktisch korrekt, ich würde jedoch das unübliche `+' weglassen. Du gehst mir oft zu sehr ins Detail und beantwortest vor allem zu viele garnicht gestellte Fragen, |
|
trotzdem Danke :-) |
#7
| |||||
| |||||
|
|
Thomas Braun wrote: Thomas 'PointedEars' Lahn wrote: Thomas Braun wrote: [Zitat repariert] Welches Zitat? Deins. |
|
Stimmt. Ich hätte Dein Posting auch ignorieren können. Merkst Du was? |
|
2. Die Iteration über offsetParent ist unzuverlässig und in den meisten Fällen nicht nötig. Die alternative wäre? Relative Positionierung. |
|
Usenet ist kein Wunschkonzert. http://dcljs.de/ |
|
Es ist nämlich nicht Sinn und Zweck dieser Diskussionsgruppe, anderer Leuts' kapotte Copy-und-Pray-Scripts kostenlos zu reparieren. |
#8
| |||||
| |||||
|
|
Thomas 'PointedEars' Lahn wrote: Thomas Braun wrote: Thomas 'PointedEars' Lahn wrote: Thomas Braun wrote: [Zitat repariert] Welches Zitat? Deins. Da ich nichts zitiert habe, gab es auch nix zu reparieren. |
|
2. Die Iteration über offsetParent ist unzuverlässig und in den meisten Fällen nicht nötig. Die alternative wäre? Relative Positionierung. Für diesen Anwendungsfall denke ich eher ungeeignet. Der Kalender steht neben einem (oder mehreren) Datums-Eingabefeld(ern), bei relativer Positionierung müßte man also das <div> mehrfach statisch in die Seite einbauen (-> zusätzlicher Traffic), bzw. mehrfach dynamisch an den richtigen Stellen der Seite (versteckt) plazieren. |
|
Da nehme ich lieber ein paar Pixel Fehlpositionierung in Kauf |
|
Usenet ist kein Wunschkonzert. http://dcljs.de/ Auch nett finde ich in dem Zusammenhang das Wort "Satzung", gibt es denn auch eine dcljs Jahreshauptversammlung und einen Vorstand? |
|
Dabei fällt mir noch eins auf: Es ist nämlich nicht Sinn und Zweck dieser Diskussionsgruppe, anderer Leuts' kapotte Copy-und-Pray-Scripts kostenlos zu reparieren. Bitte lies dazu nochmal zum Vergleich hier http://dcljs.de/#satzung |
![]() |
| Thread Tools | |
| Display Modes | |
| |