Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $(document).ready()中的函数找不到DOM的body元素_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript $(document).ready()中的函数找不到DOM的body元素

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(),则会弹

我正在编写一个AngularJS web应用程序,在任何作用域之外有一个函数需要调用作用域内的函数。我调用函数并按照答案中给出的说明进行操作

它经常工作,但有时该函数无法成功运行。调试器给了我:

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,而且它写起来更短;)