2013-05-05 99 views
0

我真的不明白如何在文檔準備好時正確調用Javascript函數。我的目標是根據瀏覽器窗口的高度來調整div的大小,然後從SO上的另一個答案中獲取這些代碼。我究竟做錯了什麼?Javascript - 如何正確調用函數

function resizeElementHeight(element) { 
    var height = 0; 
    var body = window.document.body; 
    if (window.innerHeight) { 
     height = window.innerHeight; 
    } else if (body.parentElement.clientHeight) { 
     height = body.parentElement.clientHeight; 
    } else if (body && body.clientHeight) { 
     height = body.clientHeight; 
    } 
    element.style.height = ((height - element.offsetTop) + "px"); 
} 

$(document).ready(resizeElementHeight($('#global_image'))); 

我試圖調用元素的ID爲「global_image」,但我得到「未定義不能設置屬性高度」,我覺得丟了怎麼提供正確的元素的功能。謝謝你的幫助!

回答

1

功能resizeElementHeight需要一個DOM元素,而不是一個JavaScript對象。爲了擴大techfoobar的答案,你應該將其更改爲:

$(document).ready(function() { 
    resizeElementHeight($('#global_image')[0]); 
}); 
+0

這工作很好。謝謝! – 2013-05-05 12:27:09

5

ready()需要函數作爲它的參數。現在,您撥打resizeElementHeight()並將其返回值傳遞到ready()

在您當前的代碼中,在調用resizeElementHeight()時,DOM尚未準備好,元素#global_image尚未在DOM樹中。

您應將其更改爲:

$(document).ready(function() { 
    resizeElementHeight($('#global_image')); 
}); 
+0

謝謝你的解釋! – 2013-05-05 12:24:35

0

DOM對象,當你通過打電話resizeElementHeight.replace未完全加載是:

$(document).ready(function() { 
    resizeElementHeight($('#global_image')[0]); 
});