2012-04-06 10 views
0

通常、HTMLで作成されたdivがあるとき。 offsetWidthまたはstyle.width(宣言されている場合)で幅を確認できます。しかし、innerHTMLがdivの幅も変更されるように変更された場合、これらの関数はどちらも機能しません(わかりませんが、私の場合はありません)。javascript/dojoでhtml要素(div)の幅を計算していますか?

いくつかのコード:

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

どのように上記のdivの幅を得るのですか?

+0

、おそらくあなたは見つけるだろう[dojox/HTML /メトリック](http://dojotoolkit.org/api/dojox/html/metrics)便利 – peller

答えて

1

ドキュメントに追加されていない要素の幅の値を取得することはできません。

ので、あなたはここに

が、私は「これは古い問題であると認識が、多くの人々のためのGoogle Iからここに上陸作業demo

+0

ああ、知りませんでしたそれ。ありがとう! – Derek

3

で、あなたが幅を得ることができるよりも、ページに追加しなければなりませんそれを提供するでしょう。

これはdojo 1.7+で行う方法です。ジオメトリモジュールを使用すると、コンテンツの幅を取得したり設定したりすることができます(パディングや枠線を含まない)。これはボックスサイズを無視します。

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}); 
}); 

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