2013-03-25 81 views
200

关于如何在不使用jQuery的情况下获得div高度的任何想法?用普通的JavaScript获取div高度

我正在为此问题搜索堆栈溢出,似乎每个答案都指向jQuery的.height()

我尝试了类似myDiv.style.height的东西,但它没有返回任何内容,即使我的div在CSS中设置了其widthheight

+0

http://stackoverflow.com/a/10118190/1172872 – 2013-03-25 13:08:18

回答

377
var clientHeight = document.getElementById('myDiv').clientHeight; 

var offsetHeight = document.getElementById('myDiv').offsetHeight; 

clientHeight包括填充。

offsetHeight包括填充,滚动条和边框。

+2

的offsetHeight犯规wokr下面http://www.quirksmode.org/mobile/tableViewport_desktop.html – fearis 2015-08-26 15:38:10

+2

你可以IE10还可以使用'scrollHeight',它包含所包含文档的高度,垂直填充和垂直边框。 – 2015-12-24 11:35:26

+4

'clientHeight'还包含了填充,所以它不等价于'$ .height()' – Eevee 2016-01-10 01:58:47

13

jsFiddle

var element = document.getElementById('element'); 
alert(element.offsetHeight); 
6
var myDiv = document.getElementById('myDiv'); //get #myDiv 
alert(myDiv.clientHeight); 

clientHeight和clientWidth是你在找什么。

offsetHeight和offsetWidth也返回高度和宽度,但它包含边框和滚动条。根据情况,您可以使用其中一种。

希望这会有所帮助。

2

其他答案不适合我。这是我在w3schools找到的,假设divheight和/或width集。

所有你需要的是heightwidth排除填充。

var height = document.getElementById('myDiv').style.height; 
    var width = document.getElementById('myDiv').style.width; 

您downvoters:这个答案已经帮助至少5人,由我收到了upvotes判断。如果你不喜欢它,告诉我为什么我可以修复它。这是我最大的宠儿,你很少告诉我你为什么会失望。

+12

这是行不通的,除非div有一组“高度”和/或“宽度” – 2015-09-16 15:15:00

+0

我认为这是假设和暗示。你想在我的回答中提到的警告吗? – craned 2015-09-16 18:41:59

+0

@霍普金斯马特是我的更新答案令人满意? – craned 2015-09-17 16:08:56

1
<div id="item">show taille height</div> 
<script> 
    alert(document.getElementById('item').offsetHeight); 
</script> 

Jsfiddle

4

另一种选择是使用getBoundingClientRect功能。请注意,如果元素的显示为'none',getBoundingClientRect将返回一个空矩形。

例子:

var elem = document.getElementById("myDiv"); 
if(elem) { 
    var rect = elem.getBoundingClientRect(); 
    console.log(rect.height); 
}