带有母版页的ASP中的javaScript

时间:2013-09-26 19:30:11

标签: c# javascript asp.net

我在masterPage下遇到了一些问题。我的小软件使用清晰的代码生成随机值,然后使用客户端脚本将i从0计数到值。当我运行程序没有masterpages它工作,但当我尝试从嵌套页面运行它时,它不起作用。在这里我的代码:

捣碎页面只有ContentPlaceHolder。 嵌套的Web表单:

asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Label ID="Label2" runat="server" Text="0"></asp:Label>

</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>

敏锐的代码:

Random rnd = new Random();
        int q = rnd.Next();
        Label1.Text = q.ToString();

        ScriptManager.RegisterClientScriptInclude(this.Page, typeof(Page), "counter", "myjs.js");
        Button1.Attributes.Add("onclick", "counter(); return false;");

脚本:

function counter() {
var q = Number(document.getElementById("Label1").innerHTML);    
var i = Number(document.getElementById("Label2").innerHTML);
if (i < q) {
    i += 1;
    document.getElementById("Label2").innerHTML = i;
    setTimeout(function () { counter(); }, 10);
}
}

此处的错误 var q = Number(document.getElementById(“Label1”)。innerHTML); 和错误文本:运行时错误Microsoft JScript:需要对象 < / p>

1 个答案:

答案 0 :(得分:1)

您没有使用getElementById获取元素实例,因为ASP.Net引擎正在更改生成的HTML中生成的客户端ID。

为避免这种情况,如果您使用的是.net framework 4或更高版本,则可以在要拥有相同客户端和服务器ID的服务器控件中添加ClientIDMode="Static"属性。