Hoehe eines Elementes ermitteln
Philipp Grashoff
- javascript
Hi Forumler,
ich versuche, die hoehe einer tabelle herauszufinden. direkt per javascript kann man ja leider nicht darauf zugreifen, aber immerhin gibt es die hoehe der td's, die man ermitteln kann. nun habe ich bei meiner 2zeiligen tabelle so gemacht:
var h1 = document.getElementById("tabellenid").rows[0].cells[0].height;
var h2 = document.getElementById("tabellenid").rows[1].cells[0].height;
leider hat das zu rein gar nichts gefuehrt, leeres ergebnis. da habe ich mir jetzt die frage gestellt, ob man die hoehe der td's nur auslesen kann, wenn man sie vorher definiert hat...
falls das der fall sein sollte, gibt es irgendeine moeglichkeit, die hoehe irgendeines elementes zu ermitteln, die nicht bekannt ist (also wo es kein height-attribut gibt)?
mfg
philipp
Hallo Philipp,
ich versuche, die hoehe einer tabelle herauszufinden. (...) da habe ich mir jetzt die frage gestellt, ob man die hoehe der td's nur auslesen kann, wenn man sie vorher definiert hat...
Ja, wobei theoretisch das Auslesen der »computed values« über DOM CSS möglich ist, siehe http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-OverrideAndComputed, http://styleassistant.de/tips/tip64.htm und http://styleassistant.de/tips/tip56.htm.
Das ist aber meines Wissens momentan nicht hinreichend kompatibel.
falls das der fall sein sollte, gibt es irgendeine moeglichkeit, die hoehe irgendeines elementes zu ermitteln, die nicht bekannt ist (also wo es kein height-attribut gibt)?
http://selfhtml.teamone.de/javascript/objekte/all.htm#offset_height
Sollte auch mit Gecko, Opera und KHTML funktionieren.
Mathias
Hi,
ich hab mal ein crossDOM-Script programmiert, dass Dir evtl. weiterhilft:
<script languaga='JavaScript'>
var idDOM=0;
var allDOM=0;
var layDOM=0;
var DHTML=0;
if (document.getElementByID) {
idDOM=1;
DHTML=1;
} else {
if (document.all) {
allDOM=1;
DHTML=1;
} else {
browserVersion=parseInt(navigator.app-Version);
if ((navigator.appName.indexOf('Netscape')!=1) && (browserVersion==4)) {
layDOM=1;
DHTML=1;
}
}
}
function crossDOM(Stil,ObjID) {
if (idDOM) {
if (Stil==1) {
return (document.getElementByID(ObjID).style);
} else {
return (document.getElementByID(ObjID));
}
}
if (allDOM) {
if (Stil==1) {
return (document.all[ObjID].style);
} else {
return (document.all[ObjID]);
}
} else {
if (layDOM) {
return (document.layers[ObjID]);
}
}
}
function objHeight(ObjID) {
dom=crossDOM(0,ObjID);
if (dom.offsetHeight) {
return dom.offsetHeight;
}
if (layDOM) {
return dom.clip.height;
} else {
return (0);
}
}
</script>
Um jetzt die Höhe eines Elements rauszubekommen rufst Du die Funktion objHeight auf:
objekt_hoehe=objHeight("DEIN_OBJEKT");
Gruß
Ralf
Hallo Ralf,
browserVersion=parseInt(navigator.app-Version);
if ((navigator.appName.indexOf('Netscape')!=1) && (browserVersion==4))
if (document.layers) ... reicht aus, um Netscape 4 zu identifizieren. Falls du Netscape <4 ausschließen willst, solltest du appVersion (sic) abfragen, aber erst nach document.layers (ich weiß nicht, ob es hier überhaupt nötig ist, ich bezweifle es).
Das bringt aber nur etwas, wenn du in den Funktionen letztlich auch prüfst, ob die Variable DHTML gesetzt wurde und den negativen Falle behandelst.
Mathias
Hallo Mathias
browserVersion=parseInt(navigator.app-Version);
if ((navigator.appName.indexOf('Netscape')!=1) && (browserVersion==4))if (document.layers) ... reicht aus, um Netscape 4 zu identifizieren. Falls du Netscape <4 ausschließen willst, solltest du appVersion (sic) abfragen, aber erst nach document.layers (ich weiß nicht, ob es hier überhaupt nötig ist, ich bezweifle es).
Das bringt aber nur etwas, wenn du in den Funktionen letztlich auch prüfst, ob die Variable DHTML gesetzt wurde und den negativen Falle behandelst.
Wie Du sicher gesehen hast, ist es ein Programm, das möglichst alles abfangen soll, eben crossDOM!!! Ob hier alles zum tragen kommt, was das programm kann oder nicht, ist sicher fraglich, aber auch nicht weiter erwähnenswert, da ich das Programm ja jetzt nicht für diesen speziellen Fall umschreiben werde, wenn es auch so funktioniert.
Gruß
Ralf