我想動態獲取三列網格內的子元素的高度。Javascript元素offsetHeight返回for循環返回0
當i
等於2,或者當i
大於1時(即,當有在循環內最小2個元件),offsetHeight
正確返回呈現高度(I在用於專用$('#testheight')
元件顯示的呈現高度值)
但是,當i
等於1時,offsetHeight
將返回0,即使呈現的元素具有高度(在子元素中通過PHP呈現<img>
元素)。
我找不到錯誤!請幫忙!
function makeGrid(){
var blocks = document.getElementById("grid_container").children;
var pad = 0, cols = 3, newleft, newtop;
var max_height = 0;
var newoffsetheight = 0;
for(var i = 1; i < blocks.length; i++){
if (i % cols == 0) {
newtop = (blocks[i-cols].offsetTop + blocks[i-cols].offsetHeight) + pad;
max_height = Math.max(max_height, newtop + blocks[i-cols].offsetHeight);
blocks[i].style.top = newtop+"px";
newoffsetheight = blocks[i].offsetHeight;
}
else {
if(blocks[i-cols]){
newtop = (blocks[i-cols].offsetTop + blocks[i-cols].offsetHeight) + pad;
blocks[i].style.top = newtop+"px";
}
newleft = (blocks[i-1].offsetLeft + blocks[i-1].offsetWidth) + pad;
blocks[i].style.left = newleft+"px";
newoffsetheight = blocks[i].offsetHeight;
}
}
$('#testheight').html(newoffsetheight);
}
爲什麼你開始你的循環'i'設置爲1,而不是0? –
@LambdaNinja根據註釋,如果'int i = 0;'是你的循環初始化器,你會希望'i <= blocks.length;'循環遍歷數組循環中的每一項。 –
謝謝,但即使我將循環更改爲:for(var i = 0; i <= blocks.length; i ++){},它不顯示正確的值... – rainerbrunotte