![](/img/trans.png)
[英]js function called twice (one in document ready, one after adding new dom element) executing twice times
[英]function in $(document).ready() not finding body element of DOM
我正在編寫AngularJS Web應用程序,並且在需要在作用域內調用函數的任何作用域之外都有一個函數。 我調用該函數並按照此答案中給出的說明進行操作。
function returnDest(callback) {
$(document).ready(angular.element(document.getElementById('body')).scope().getTask(function() {
if(callback) {
callback(locationInfo);
}
}));
}
它經常工作,但有時功能無法成功運行。 調試器給我:
Uncaught TypeError: Cannot read property 'getTask' of undefined
我不知道為什么在$(document).ready應該僅在加載DOM之后才觸發該函數,為什么在未定義的函數上調用該函數。 如果使用$(window).load(),則會彈出相同的錯誤。 如何確保此功能成功運行?
供參考,這是HTML文件中定義“ body”元素的行
<body style="background-color:#e6e8f3" ng-app="app" ng-controller="controller" id="body">
$(document).ready
應該在您的函數之外:
$(document).ready(function returnDest(callback) {
angular.element(document.getElementById('body')).scope().getTask(function() {
if(callback) {
callback(locationInfo);
}
})});
angular.element
返回一個jQuery對象。
ready()
期望傳遞給它的參數是文檔准備好時將調用的函數 。
這聽起來像你需要用你正在試圖通過一切ready
的function () { ... }
您使用的.ready
錯誤。 在DOM准備就緒之前調用returnDest
的那一刻,它會嘗試獲取ID為body
的元素。 由於未加載,因此無法訪問body
。 取而代之的是,省略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
}
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.