getElementByID
thomas uhde
- javascript
Hallo.
folgendes Problem:
Bei geschachtelten Tabellen liefert mir die Funktion getElementByID(id) im IE Werte der übergeordneten Tabelle, wenn ich die ID der untergeordneten angebe. Bsp:
<table ...>
<tr>
<td>
<table ...>
<tr>
<td id="col1"></td>
</tr>
</table
</td>
</tr>
</table>
gib getElementByID('col1') Werte der ersten Tabelle (bspw. Abstand zum linken Seitenrand).
Wenn ich keine geschachtelten Tabellen verwende funktioniert alles.
Danke.
tuh
Hallot homas
gib getElementByID('col1') Werte der ersten Tabelle (bspw. Abstand zum linken Seitenrand).
Wenn ich keine geschachtelten Tabellen verwende funktioniert alles.
Wie hast du den Abstand bestimmt?
Schau dir mal Position abfragen an.
Auf Wiederlesen
Detlef
Positionsabfrage wird mit folgender Funktion gemacht (funktioniert tadellos bei nichtgeschachtelten Tabellund und Firefox :o) )
function getX(id) {
var e = document.getElementById ? document.getElementById(id) : document.all ? document.all[id] : document.layers[id];
//var e = jahiaGetObject(id);
x = getPageOffsetLeft(e);
// adjust position for IE
if (browser.isIE) {
x += e.offsetParent.clientLeft;
}
return x;
}
Hallo thomas
Positionsabfrage wird mit folgender Funktion gemacht (funktioniert tadellos bei nichtgeschachtelten Tabellund und Firefox :o) )
Der gibt ja auch direkt die Position zurück.
...
// adjust position for IE
if (browser.isIE) {
x += e.offsetParent.clientLeft;
Hiermit hast du dann zur Position deines Objekts zu seinem Parent die
Position dieses zu seinem addiert.
Welches Element ist denn nun aber der Parent von <td id="col1"></td>?
Welches der Parent davon?
Ist das bereits <html>, oder gibt es noch etwas dazwischen?
Schau dir noch einmal Position abfragen an!
Auf Wiederlesen
Detlef
selbes Problem mit der Funktion aus dem älteren Thread.
in beiden Browsern wird die while-Schleife 5 mal durchlaufen, nur sehen die Ergebnisse unterschiedlich aus (Firefox gibt den richtigen x-Wert und der IE "10".
ich tippe auf folgende Durchläufe:
-Zelle
-Tabelle
-Zelle
-Tabelle
-Body
Hallo thomas
in beiden Browsern wird die while-Schleife 5 mal durchlaufen, nur sehen die Ergebnisse unterschiedlich aus (Firefox gibt den richtigen x-Wert und der IE "10".
Das kann ich jetzt nich nachvollziehen. Ich habe es extra nocheinmal getestet.
Bei mir gaben sowohl Mozilla als auch IE den gleichen Wert (mit ein bis zwei
Pixeln Differenz) zurück.
Kannst du mal deine Testseite online stellen, damit wir das nachvollziehen können?
Auf Wiederlesen
Detlef
http://webtec24.de/top.htm
das Script liegt in http://webtec24.de/menu.js
Firefox gibt die linke obere Ecke des Elements, deswegen wird bei getY noch 17 addiert. Im IE bekomme ich wieder die linke obere Tabellenecke der übergeordneten Tabelle.
Danke für die Mühe.
Thomas
Hallo Thomas
Firefox gibt die linke obere Ecke des Elements, deswegen wird bei getY noch 17 addiert. Im IE bekomme ich wieder die linke obere Tabellenecke der übergeordneten Tabelle.
Ich habe zum Test als letztes in den body von http://webtec24.de/top.htm
<br>
<br>
<br>
<br>
<a href="#" onclick="test('menu1');return false;">Hier Klicken</a>
eingefügt.
Wenn ich auf den Link klicke gibt mir der Mozilla 249, 101 zurück,
mein IE 251, 108. Diese Werte dürften stimmen.
In das Menüscript habe ich mich allerdings nicht weiter vertieft, warum dieses
beim IE eine falsche Position verwendet, weiß ich also zumindest im Moment noch
nicht.
Jetzt werde ich auch erstmal nicht weitersuchen.
Auf Wiederlesen
Detlef
Hallo Thomas
Firefox gibt die linke obere Ecke des Elements, deswegen wird bei getY noch 17 addiert. Im IE bekomme ich wieder die linke obere Tabellenecke der übergeordneten Tabelle.
Es hat mir keine Ruhe gelassen, habe doch noch einmal reingesehen.
Das Problem ist, dass die Menüs zu einem Zeitpunkt angelegt werden, zu dem die
Tabellen noch nicht fertig gerendert sind.
Damit werden falsche Positionen gespeichert und dann auch weiterverwendet.
Du musst dafür sorgen, dass new ypSlideOutMenu(... erst ausgeführt wird, wenn
die Tabellen fertig gerendert sind.
Auf Wiederlesen
Detlef
Hallo Thomas,
noch ein Nachtrag:
Hast du dir auch Gedanken darüber gemacht, was Besucher zu sehen bekommen, bei
denen kein Javascript aktiviert ist?
Hast du dir die Seite und die Funktion einmal angesehen, wenn der Benutzer eine
größere Schrift eingestellt hat?
Auf Wiederlesen
Detlef