2017-01-25 7 views
1

私には2つの質問があります。 より重要なのは、divの幅を測定する方法です。 CSS値を取得するのではなく、pxまたはemsなどで取得します。 は今のところ私はこのdivの幅をJavascriptで測定する

document.getElementById("menu").addEventListener("click", GetWidth); 
function GetWidth() { 
var ulObject=document.querySelector(".dropdown-menu"); 
var obtainedStyle=window.getComputedStyle(ulObject); 
var ulWidth=obtainedStyle.getPropertyValue("width"); 
console.log(ulWidth); 
} 

それがポイントに働くようにそれをやっています。問題は、幅のプロパティがautoに設定されているが、変更される可能性があることです。どのように使用可能な価値を得るには?
2番目の質問は、クラスを使用してイベントハンドラを作成する方法です。 querySelectorおよびgetElementByClassNameが機能しませんでした。
私はむしろjQueryを避けたいと思いますが、それが唯一の選択肢なら、私はそれを取るでしょう。 How do I retrieve an HTML element's actual width and height?で指定された回答は機能しません。私には表示がありません:none; offsetWidthはまだ0

+1

を使用することができます。https([getBoundingClientRect()]を見てください:しかし、IE8以下ではwidthとheightが返されません – haxxxton

+0

私はあなたが 'offsetsetWidth'を探していると信じています:// https://developer.php/Element/getBoundingClientRect msdn.microsoft.com/en-us/library/ms534304(v=vs.85).aspx –

+0

複数のクエリーを要求しない同時に切開する。最初の質問については、['getBoundingClientRect'](http://stackoverflow.com/questions/294250/how-do-i-retrieve-an-html-elements-actual-width-and-height)を試してください。 2つ目は 'getElementByClassName'は存在しません。実際の' getElementsByClassName'は単一の要素ではなく 'HTMLCollection'を返します。 'querySelector'はうまくいくはずですが、コードを表示していません。 – Xufox

答えて

0

使用getBoundingClientRectを示しています

var rect = ulObject.getBoundingClientRect(); 
var ulWidth = rect.width; 

あなたはIE8と前回をサポートする必要がある場合は、あなたが

var ulWidth = rect.right - rect.left; 
+0

幅が0であると言います – alex3wielki

+0

@ alex3wielkiあなたは隠された要素の幅を読み取る必要があります隠された要素はサイズがありません。 – epascarello

+0

ありがとう。しかし、CSSの幅がautoの場合でも値を取ることができますか? – alex3wielki

関連する問題