0

masterPage の下のページに問題があります。私の小さなソフトは、シャープなコードでランダムな値を生成し、クライアント スクリプトで i を 0 から値までカウントします。マスターページなしでプログラムを実行すると動作しますが、ネストされたページから実行しようとすると動作しません。ここに私のコード:

マストされたページには 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: オブジェクトが必要です

4

1 に答える 1

1

getElementByIdASP.Net エンジンが結果の HTML で生成されたクライアント ID を変更しているため、を使用して要素インスタンスを取得していません。

これを回避するには、.net Framework 4 以降を使用している場合はClientIDMode="Static"、サーバー コントロールにプロパティを追加して、同じクライアント ID とサーバー ID を持たせることができます。

于 2013-09-26T20:34:12.113 に答える