Javascript $(document).ready()中的函数找不到DOM的body元素
我正在编写一个AngularJS web应用程序,在任何作用域之外有一个函数需要调用作用域内的函数。我调用函数并按照答案中给出的说明进行操作 它经常工作,但有时该函数无法成功运行。调试器给了我:Javascript $(document).ready()中的函数找不到DOM的body元素,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在编写一个AngularJS web应用程序,在任何作用域之外有一个函数需要调用作用域内的函数。我调用函数并按照答案中给出的说明进行操作 它经常工作,但有时该函数无法成功运行。调试器给了我: Uncaught TypeError: Cannot read property 'getTask' of undefined 我不知道为什么在$(document.ready)时调用undefined函数。只有在加载DOM之后,ready才应该启动函数。如果使用$(window.load(),则会弹
Uncaught TypeError: Cannot read property 'getTask' of undefined
我不知道为什么在$(document.ready)时调用undefined函数。只有在加载DOM之后,ready才应该启动函数。如果使用$(window.load(),则会弹出相同的错误。如何确保此功能成功运行
作为参考,这里是HTML文件中定义“body”元素的行
<body style="background-color:#e6e8f3" ng-app="app" ng-controller="controller" id="body">
angular.element
返回jQuery对象
ready()
希望您传递给它的参数是一个函数,它将在文档准备就绪时调用该函数
听起来您需要在
function(){…}
angular.element
中包装您试图传递给ready
的所有内容
ready()
希望您传递给它的参数是一个函数,它将在文档准备就绪时调用该函数
听起来您需要在函数(){…}
$(文档)中包装您试图传递给准备就绪的所有内容。准备就绪应该在您的函数之外:
$(document).ready(function returnDest(callback) {
angular.element(document.getElementById('body')).scope().getTask(function() {
if(callback) {
callback(locationInfo);
}
})});
$(文档)。准备就绪
不属于您的职责范围:
$(document).ready(function returnDest(callback) {
angular.element(document.getElementById('body')).scope().getTask(function() {
if(callback) {
callback(locationInfo);
}
})});
您使用的.ready
不正确。在DOM准备就绪之前调用returnDest
时,它会尝试获取ID为body
的元素。由于未加载,正文
无法访问。相反,省略主体
ID,并像这样使用它:
function returnDest(callback) {
$(document).ready(function() {
angular.element(document.body).scope().getTask(function() {
if (callback) {
callback(locationInfo); // Not sure where locationInfo is coming from
}
});
});
}
您使用的.ready
不正确。在DOM准备就绪之前调用returnDest
时,它会尝试获取ID为body
的元素。由于未加载,正文
无法访问。相反,省略主体
ID,并像这样使用它:
function returnDest(callback) {
$(document).ready(function() {
angular.element(document.body).scope().getTask(function() {
if (callback) {
callback(locationInfo); // Not sure where locationInfo is coming from
}
});
});
}
这不是你使用ready的方式。。。它需要一个函数,而您只是在其中运行JavaScript…出于好奇…您在哪里使用此代码?这不是您使用ready的方式。。。它需要一个函数,而您只是在其中运行JavaScript…出于好奇…您在哪里使用此代码?这改变了returnDest
,,,,怀疑这是有意的。这改变了returnDest
,,,,,怀疑这是有意的。太棒了,这完全满足了我的需要。不过,为了进一步理解这一点,我明白我发布的代码不起作用的主要原因是我没有将对getTask的调用封装在函数中。我使用document.body还是document.getElementById('body')有什么区别吗?@jcharch唯一真正的区别是你不必给body一个ID,而且它写起来更短;)太棒了,这完全符合我的需要。不过,为了进一步理解这一点,我明白我发布的代码不起作用的主要原因是我没有将对getTask的调用封装在函数中。我使用document.body还是document.getElementById('body')有什么区别吗?@jcharch唯一真正的区别是你不必给body一个ID,而且它写起来更短;)