2012-04-11 2 views
0

Ich muss die tatsächliche Breite und Höhe des shareddiv vor dem Auffüllen mit Inhalt, so dass ich bestimmen kann, wie viele Panels können in die shareddiv basierend auf passen Gerät oder Browser-AuflösungHTML - Um die div Breite und Höhe vor dem Auffüllen mit Inhalt zu erhalten

<div id="outerdiv"> 
<div style="width: 100% ;height:100%;" id="sharedDiv" ></div> 
</div> 

die Warnung gibt unterschiedliche Werte an verschiedenen Stellen im Code.

var divow = document.getElementById('sharedDiv').offsetWidth; 
     alert("div offsetwidth"+divow); 
+0

Sie müssten mehr Code schreiben für uns helfen herauszufinden, warum es unterschiedliche Werte an verschiedenen Stellen im Code zurückgibt. Ändert sich die tatsächliche Breite des Div zwischen diesen verschiedenen Punkten im Code? Von dem, was ich hier sehe, sieht es so aus, als ob Sie auf dem richtigen Weg sind. – Travesty3

+0

Warte, sagst du eigentlich, dass die _width_ des div variiert je nachdem, wo Sie seinen Wert abfragen? Hm. –

+0

Ja! Wenn ich den Stil mit width = 100% und height = 100% spezifiziere, dachte ich, div würde die Breite und Höhe des Geräts nehmen.Also, bevor ich die Steuerelemente in diesen div Bereich rende, wenn ich die Größe des div Es entspricht der Gerätebreite und -höhe und ich kann leicht die Anzahl der Steuerelemente berechnen, die richtig in das Gerät passen. – user1071096

Antwort

0

Sie werden nur eine gültige Messung erhalten, sobald das DOM und Ihre Ressourcen (CSS und Bilder) geladen sind. Bis dahin können sich Elemente auf der Seite bewegen und die Größe ändern (progressives Rendering). Daher sollten Sie Ihre Messungen in einem Event-Handler wie onload vornehmen. Sie sollten auch bei einem Größenänderungsereignis neu berechnen.

+0

Die div-Größe wird benötigt, bevor irgendwelche Steuerelemente in sie eingefügt werden, so dass die Anzahl der Steuerelemente in diesem div-Bereich entsprechend der Geräteauflösung gefunden werden kann. Aber, ja! Die Breite der div variiert je nachdem, wo ich abfrage. – user1071096

+0

das weiß ich. lies meine Antwort sorgfältig. Ich versuche zu erklären, dass, wenn Sie abfragen, während die Seite geladen wird (wie durch ein Inline-Skript-Tag), was Sie tatsächlich tun, ist ein Beispiel für die Abmessungen der Elemente, bevor die endgültigen Dimensionen bekannt sind. Wenn Sie darauf warten, dass die Seite tatsächlich geladen wird * und dann * Ihre Steuerelemente erstellen, erhalten Sie ein konsistentes Ergebnis. – SpliFF

0

haben Sie versucht, jquery zu verwenden?

var divow = $("#sharedDiv").outerWidth(); 

oder besser noch, warum nicht nur

var divow = $(window).height(); 
+0

: Ohne Angabe eines Meta-Tags mit dem $ (window) .height(); gibt den Wert als Landscape: 980x661.Aber habe ich nicht verstanden, die Bildschirmauflösung von meinem iPad ist 768x1024 dann wie kann die Fenstergröße 980x1208.?So, mit dieser Breite und Höhe (980x1208), wenn ich die Anzahl der Steuerelemente in die passen div Bereich und render, die Steuerelemente gehen aus der Bildschirmbreite und -höhe und Standard-Scroll erscheint oder ich muss kneifen/zoomen, um alle Steuerelemente zu sehen, die ich nicht will. – user1071096

+0

können Sie mir sagen, was genau Sie erreichen wollten, indem Sie die Breite und Höhe des Fensters erhalten? vielleicht kann ich dir helfen besser zu wissen, wofür es genau ist .. –

Verwandte Themen