2016-03-04 33 views
0

我有一個簡單的HTML元素,我從一個指令中訪問:HTML元素ClientHeight返回不一致的值

<div scroll-item ng-repeat="post in posts"> 
... 
app.directive("scrollItem", function($window){ 
    return { 
     link : function($scope, $element, $att) { 
      console.log($element[0].clientHeight); 
      console.dir($element[0]); 
     } 
    } 
}); 

兩個不同的日誌產生不同的結果。當我查看第二個日誌中找到的對象時,clientHeight返回166;這是正確的,但在第一個日誌中,它返回201.它怎麼可能產生這種不一致的結果?

我不能在這個簡單的小提琴重現問題:http://jsfiddle.net/9noo4uc5/1/ 什麼可能會導致這樣的問題?

+1

可以爲您提供一些plunkr或小提琴代碼來理解 –

+0

我試圖重現問題小提琴中的問題。我不能。我想知道什麼可能會導致這樣的問題。 – user3024235

+0

你的小提琴亙古不包含尊重指令 –

回答

0

任何元素的客戶高度歸元內高所以它是沒有必要的,每次將返回相同的值。每個元素裏面都有更多的文本,這意味着更多的clientHeight。

對於沒有CSS或內聯佈局框的元素,Element.clientHeight只讀屬性爲零,否則爲元素的內部高度(以像素爲單位),包括填充但不包括水平滾動條高度,邊框或邊距。 來源:https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight

myApp.directive("scrollItem", function(){ 
    return { 
     link : function($scope, $element, $att) { 
      $element.on('click',function(){ 
      console.log(this.clientHeight); 
      }) 
     } 
    } 
}); 

看到這個撥弄它返回不同innerHeight當你最後一個元素上點擊: http://jsfiddle.net/9noo4uc5/6/

+0

Arent他們不同的div返回不同的高度。在我的情況下,它的同一個div返回兩個不同的值。 – user3024235

+0

可能包含一些動態值 –