Javascript AngularJS:通过getElementById找不到元素
我使用第三方JavaScript应用程序的一个函数,我在AngularJS工厂中包含并调用了该函数。该函数的一个参数是DOM元素的id,因为该函数操作该元素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
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”);});但是该函数从未被调用。您的工厂完全不知道您的模板。这是需要在控制器中的逻辑。