2016-02-12 42 views
0

背景:我有一个包含视频作为学习资源的asp.net页面。当用户完成观看视频时,会将其标记为“已观看”,并在SQL数据库中创建一个条目。document.getElementById(...)在页面加载后为空

方法:我有一些JS当视频完成检测,然后触发一个JS函数,触发一个隐藏的ASP:按钮的点击事件,这反过来又触发一个vb.net代码隐藏功能,使一些视觉上的变化显示该部分的视频已被观看。

问题:当视频完成时,JS功能大火却无法再找到ASP:通过ID按钮

TypeError: document.getElementById(...) is null 

代码:

<asp:button runat="server" ID="videoEndedButton" Text="SubmitVideo" style="display:none;" onclick="videoEndedButton_Click" /> 

<script type="text/javascript"> 
    document.getElementById('pdp_video_rta').addEventListener('ended', videoEnded, false); 
    function videoEnded(e) { 
     document.getElementById("videoEndedButton").click 
    } 
</script> 

为什么不能JS函数找到asp:按钮(在页面加载后很久)。我可以单击按钮并运行代码隐藏功能(当它未隐藏时)。

回答

1

使用这样的:

document.getElementById('<%= videoEndedButton.ClientID %>').click(); 

因为 ASP 服务器端ID 需要转换客户端ID。

+0

啊,这是我所需要的,并解决了我的问题。我试图将目标作为一个HTML客户端元素的asp服务器端元素。谢谢。 – Ryan

0

对于你的asp:Button,你需要添加属性ClientIDMode =“Static”。

+0

这对我的情况没有任何影响。 – Ryan

+0

您还需要在document.getElementById(“videoEndedButton”)中单击“()”。也可能需要为videoEndedButton元素指定ClientIDMode =“Static”。 –