2013-11-22 35 views
4

我有兩個div並排設置爲高度自動。我希望它們具有相同的高度,所以我將它們組合爲數組的成員。獲得計算高度 - Javascript - 非jQuery

我通過陣列遞歸併設置不是最高的那個到最高的高度。問題是我試圖讓COMPUTED高度導致不正確的值。

我曾嘗試以下:

(els[x].currentStyle) ? h=els[x].currentStyle.height : h=window.getComputedStyle(els[x],null).height; 

h = el.clientHeight || el.offsetHeight || el.scrollHeight; 

上述這些問題都產生640 px'ish而計算爲751.8我的特別表現。

是否有possbily常數,我可以用來獲得正確的高度。就像也許我得到的數字將在標準尺寸的屏幕上(像960像素高或類似),然後多個窗口大小?

+0

怎麼樣'outerHeight'? – adeneo

+0

'getBoundingClientRect()'怎麼樣? –

+0

是否有填充和/或邊框? – epascarello

回答

6

我已經有很多很好的利用這個小功能,我想出了

function getH(id) 
{ 
    return document.getElementById(id).offsetHeight; 
} 
// I have a styles.js file where this function feels right at home. Access this function from anywhere. 

這將返回給函數任何給定元素的高度(通過它的ID)。所以現在我們只有1/3。

然後使用Math.max()函數來獲取最大元素的高度。

var maxH = Math.max(getH("ID1"),getH("ID2")); 

這是2/3的方式,YAY - 現在將元素高度設置爲相同。

var x = document.getElementById("ID1"); 
var y = document.getElementById("ID2"); 

x.style.height = maxH +"px"; 
y.style.height = maxH +"px"; //Remember the +"px" has to be added as a string, thats the reason for the "". 

DONE !! - 現在把它放在一起

我會想象這樣的事情

function setElementHeight() 
{ 
    var maxH = Math.max(getH("ID1"),getH("ID2")); 
    var x = document.getElementById("ID1"); 
    var y = doc...("ID2"); 
    x.style.height = maxH +"px"; 
    y.style.height = maxH +"px"; 
} 
// Don't forget to include the first function in you'r .js file 

這將我們設置兩個編號相同的高度和高度將等於最高。那是你想要的,不是嗎?

- 編輯 -

,如果我是你,我會扔掉陣列。只要有2個DIV每個都有一個唯一的ID,並根據它們使它們同樣高。

  • 莫爾