2012-04-06 11 views
0

Normalerweise, wenn Sie ein div in HTML erstellt haben. Sie können die Breite mit offsetWidth oder style.width überprüfen (falls deklariert). Wenn jedoch die innerHTML so geändert wird, dass sich auch die Breite des div ändert, funktioniert keine dieser Funktionen (nicht sicher, aber in meinen Fällen nicht).Berechnung der Breite des HTML-Elements (div) mit Javascript/Dojo?

einige Code:

var div = document.createElement("div"); 
div.innerHtml = "asdfasdfasdfasdfsdfasdfasdfad"; 
alert(div.style.width); // this is nothing 
alert(div.offsetWidth); // this is 0 

Wie bekommt man die Breite des div oben?

+0

vielleicht würden Sie finden [Dojox/html/Metriken] (http://dojotoolkit.org/api/dojox/html/metrics) nützlich – peller

Antwort

1

Sie können nicht Breite Wert von Element, das nicht an Dokument angehängt wurde.

so sollten Sie es auf Seite anhängen, als Sie Breite erhalten können,

Hier ist ein funktionierendes demo

+0

oh, nicht wusste, Das. Vielen Dank! – Derek

3

Ich weiß, das eine alte Frage, aber für die vielen Menschen hier von google ich Landung‘ Ich werde es zur Verfügung stellen.

So wird es im Dojo 1.7+ gemacht. Mit dem Geometrie-Modul können Sie die Breite des Inhalts abrufen und festlegen (ohne Padding oder Rahmen). Das ignoriert Box-Sizing.

require(['dojo/dom-geometry'], function(domGeom) { 
    var myDivNode = dojo.query('div')[0]; 
    var contentBox = domGeom.getContentBox(myDivNode); 
    alert(contentBox.w); 

    // This is how to set width/height 
    domGeom.setContentSize(myDivNode, {w: 100, h: 100}); 
}); 

Quelle: https://dojotoolkit.org/reference-guide/1.7/dojo/contentBox.html

Verwandte Themen