单独的js文件中的getElementById找不到ASP.net控件

isp*_*iro 3 html javascript asp.net asp.net-4.0

当我在页面标记中有这个时,它工作正常:

<script type="text/javascript">
    function bought1()
    {
        var s = '<%= Button2.ClientID %>';
        var v = document.getElementById(s);
        v.click();
    }    
</script>
Run Code Online (Sandbox Code Playgroud)

但是,当我在一个单独的文件一样的东西,即使函数执行-的价值v遗体null.

我尝试了一个简单的div,它确实找到了div.

为什么不找到ASP.net按钮?

编辑

我甚ClientIDMode="Static"至加入了Button.没变.

Win*_*Win 9

<%= Button2.ClientID %>是一个服务器代码.您无法在单独的javascript文件中运行服务器代码.

如果要从单独的javascript访问服务器控件ID,则需要将其设置ClientIDMode为可预测或静态.

这是一个例子.

以下是代码.这不是一个好例子,但我希望你能得到这个想法.

注意:确保使用时没有相同的ID ClientIDMode="Static".否则,Ids会发生碰撞.例如,一个在主页面中,一个在内容页面中.

ASPX

<script src="/JavaScript1.js"></script>
<asp:Button runat="server" ID="Button1" ClientIDMode="Static" 
    Text="I am a button" />
<div onclick="bought1()">Click Me</div>
Run Code Online (Sandbox Code Playgroud)

Javascript文件

function bought1() {
    var s = 'Button1';
    var v = document.getElementById(s);
    v.click();
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述