2013-05-05 93 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]); 
});