Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 AngularJS:通过getElementById找不到元素_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

Javascript AngularJS:通过getElementById找不到元素

Javascript AngularJS:通过getElementById找不到元素,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我使用第三方JavaScript应用程序的一个函数,我在AngularJS工厂中包含并调用了该函数。该函数的一个参数是DOM元素的id,因为该函数操作该元素 ThirdPartyApp.doSomething("#elementId").then(function (success) { }, function (error) { }); 但是我得到了错误:无法获取id为的元素… 我假设应用程序使用docume

我使用第三方JavaScript应用程序的一个函数,我在AngularJS工厂中包含并调用了该函数。该函数的一个参数是DOM元素的id,因为该函数操作该元素

ThirdPartyApp.doSomething("#elementId").then(function (success) {

                    }, function (error) {

                    });
但是我得到了错误:无法获取id为的元素…

我假设应用程序使用
document.getElementById
,因为我试图手动调用它,但它找不到元素,即使它根据浏览器的DOM资源管理器存在

id为的元素位于HTML页面中,我通过ng include包含该页面

既然我无法改变第三方应用程序的工作方式,我如何在AngularJS环境中解决这个问题

更多信息

以下是包含以下元素的html页面:

<div>
    <iframe id='testId' ng-src='{{test}}' style='overflow: hidden;' />
</div>

以下是我如何包含此html页面:

<ng-include src="'/views/shared/test.html'"></ng-include>


为什么AngularJS工厂中的
document.getElementById(“testId”)
找不到iframe元素?

很难说到底是怎么回事,因为我看不到您正在使用的第三方库的源代码

但是,我猜想,当您调用获取iframe元素时,您正在使用
ng include
添加的模板尚未完成内容加载

要验证这一点,请尝试通过向AngularJS控制器添加以下内容来获取元素:

$scope.$on('$includeContentLoaded', function () {
    var myTest = document.getElementById("testId");
});

此代码块将等待您的“ng included”内容呈现。

您是否尝试在没有
#
的情况下传入elementId?@DanielBernsons是。同样的结果在这种情况下,如果不知道您正在使用的第三方应用程序或HTML代码的外观,就不可能提供任何有用的帮助。对不起。打字错误它实际上是在AngularJS的工厂里。我尝试了以下操作:$rootScope.$on('includeContentLoaded',function(){var myTest=document.getElementById(“sketch”);});但是该函数从未被调用。您的工厂完全不知道您的模板。这是需要在控制器中的逻辑。