2015-06-25 39 views
0

我試圖弄清楚我的內容div的高度時溢出內容感謝漂亮的.scrollHeight JavaScript函數。但是,當我提醒這個高度時,我會得到一個「未定義」的結果。我是相當新的JavaScript,所以我可能已經取得了一些非常愚蠢的錯誤:試圖找出我溢出的div的高度感謝.scrollHeight

http://codepen.io/anon/pen/GJOVvd

基本上看起來像這樣在我的HTML(因爲堆棧溢出不會讓我交codepen鏈接):

<script>var intElemScrollHeight = document.getElementsByClassName("content").scrollHeight; 
alert(intElemScrollHeight + " px"); 
</script> 

我做了一個快速的codepen,真的很像我的問題,除了我的內容容器在我的實際項目中的高度取決於標題的高度,但這種變化我認爲沒有改變,因爲我仍然得到「不確定」。

回答

0

document.getElementsByClassName返回一個匹配給定類名的元素數組。這可能只有一個,也可能是多個。你必須做的改變是可以得到結果數組的第一個元素:

var intElemScrollHeight = document.getElementsByClassName("content")[0].scrollHeight; 
alert(intElemScrollHeight + " px"); 

欲瞭解更多有關getElementsByClassName方法見MDN:Document.getElementsByClassName

如果你有一類內容的多個要素是什麼,你必須做的是迭代結果。看到這個stackoverflow線程:Iterating over Results of getElementsByClassName。 本質上,該溶液是:

var els = document.getElementsByClassName("myclass"); 

Array.prototype.forEach.call(els, function(el) { 
    // Do stuff with the element 
    console.log(el.tagName); 
}); 
+0

非常好,詳細的答案,也很快!在我的小型便攜式計算機和我的網站上都完美地工作。非常感謝您的加入,並向我展示瞭如何遍歷多個類名稱的結果! –

0

應使用 變種intElemScrollHeight = document.getElementsByClassName( 「內容」)[0] .scrollHeight;

因爲如果您嘗試getElementByClassName,它將返回包含所有具有「內容」類的html元素的數組。所以你必須給索引0,因爲它只有div或html元素具有「內容」類。建議使用document.GetElementById,如果有多個元素分配了相同的類。