8 Stimmen

Warum würde Jquery 0 für eine offsetHeight zurückgeben, wenn Firebug sagt, es ist 34?

Also ich habe ein Div, dessen Inhalt zur Laufzeit generiert wird, hat es zunächst keine Höhe mit ihm verbunden. Wenn es nach Firebug generiert wird und von dem, was ich mit js alarmieren kann, hat das div immer noch eine Höhe von 0. Jedoch, Blick auf die schreibgeschützten Eigenschaften mit Firebug kann ich sehen, dass es eine Offset-Höhe von 34 hat. Es ist dieser Wert, den ich brauche. Hoffentlich ist es offensichtlich, aber für den Fall, dass es nicht ist, ist diese Zahl variabel, es ist nicht immer 38.

Also, ich dachte, dass ich nur bekommen könnte, dass, indem Sie dies über Jquery ...

$("#parentDiv").attr('offsetHeight');

oder dies mit Straight Js...

document.getElementById("parentDiv").offsetHeight;

Aber alles, was zurückgegeben wird, ist 0. Hat es etwas mit der Tatsache zu tun, dass die Offsethöhe in diesem Fall eine schreibgeschützte Eigenschaft ist? Wie kann ich diese Höhe erhalten? Ich meine Firebug ist es irgendwie herauszufinden, so dass es scheint, wie ich in der Lage sein sollte,.

Editar: Hier ist ein Beispiel dafür, wie das Div im Moment aussieht...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN"><META http-equiv="Content-Type" content="text/html; charset=utf-8">

<HTML style="OVERFLOW: hidden; HEIGHT: 100%" xmlns="http://www.w3.org/1999/xhtml"><BODY><FORM id="aspnetForm" name="aspnetForm" action="blah.aspx" method="post"><DIV id="container">

<DIV id="ctl00_BodyContentPlaceHolder_Navigation" style="Z-INDEX: 1; LEFT: 1597px; POSITION: absolute; TOP: 67px">
    <DIV class="TransparentBg" id="TransparentDiv" style="MARGIN-TOP: 10px; MARGIN-RIGHT: 10px; HEIGHT: 94px; TEXT-ALIGN: center">
    </DIV>
    <DIV class="Foreground" id="ForegroundId" style="MARGIN-TOP: 10px; MARGIN-RIGHT: 10px; TEXT-ALIGN: center">
        <DIV id="ctl00_BodyContentPlaceHolder_Navigation1" style="WIDTH: 52px; COLOR: black; HEIGHT: 52px; BACKGROUND-COLOR: transparent; -moz-user-focus: normal">
            <IMG style="FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale src='../images/image.gif'); CURSOR: pointer" height="52" hspace="0" src="..." width="52" /> 
        </DIV>
        <DIV id="ctl00_BodyContentPlaceHolder_UserControl" name="ctl00_BodyContentPlaceHolder_UserControl">
            <IMG style="DISPLAY: block; VERTICAL-ALIGN: bottom; CURSOR: pointer" height="17" src="..." width="16" />
            <IMG style="VERTICAL-ALIGN: top; CURSOR: pointer" height="17" src="..." width="16" />
        </DIV>
    </DIV>
</DIV>

</DIV></FORM></BODY></HTML>

Dieser Code wird von einem Steuerelement in einer separaten Bibliothek erzeugt. Hier ist also der eigentliche Code, der ihn in meiner .aspx-Seite erzeugt.

<blah:blahControl ID="control" runat="server" />

Ok, es ist ein wenig überarbeitet, aber das ist viel mehr HTML, als ich vorher hatte. Das Div, auf das ich mich vorher als "parentDiv" bezog, heißt dort oben "ctl00_BodyContentPlaceHolder_UserControl". Dieser Code enthält das betreffende Div, seine Geschwister, Eltern, Großeltern und Kinder. Es ist fast eine direkte Kopie aus Firebug.

Aktualisierung: Ich hätte erwähnen sollen, dass dies im IE 7 geschieht. In Firefox schien es einmal gut zu funktionieren, aber jetzt gibt es 0 zurück. Gibt es dadurch neue Erkenntnisse über mögliche Umgehungslösungen oder ähnliches?

... Ihr müsst mich alle für verrückt halten.

Aktualisierung: Etwas Styling...

.TransparentBg 
{
    background-color: white;
    filter:alpha(opacity=50);
    -moz-opacity:0.5;
    -khtml-opacity: 0.5;
    opacity: 0.5;
}

.Foreground
{
    position: absolute;
    top: 0px;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X