0

タイマーで数字をカウントする小さなプログラムを ASP で実現しようとしています。このタスクを JavaScript で使用していますが、シャープ コードから呼び出すと問題が発生します。したがって、このコードはうまく機能します。

<head runat="server">
<title></title>
<script type="text/javascript" language="javascript">
    function counter() {
        var q = Number(document.getElementById("TextBox1").value);
        var i = Number(document.getElementById("Text1").value);
        if (i < q) {
            i += 1;
            document.getElementById("Text1").value = i;
            setTimeout("counter()", 10);
        }
    }
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
    <asp:TextBox ID="TextBox1" runat="server" ReadOnly="True"></asp:TextBox>
    <input id="Button1" type="button" value="button" onclick="counter()" />
    <input id="Text1" name="Text1" type="text" value="0"/>
</div>
</form>
</body>

Random 関数は Page_Load で値を生成し、TextBox1 に配置します。このコードでは、すべてに入力を使用しました。しかし、私は asp コントロールを使用したいので、シャープから同じものを書き直してスクリプトを呼び出そうとしましたが、私のコードは機能しません:

<body>
<form id="form1" runat="server">
<div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" />
    <asp:Label ID="Text1" runat="server" Text="0"></asp:Label>
</div>
</form>
</body>

とシャープなコード:

string str = "function counter() { 
    var q = Number(document.getElementById(\"TextBox1\").value); 
    var i = Number(document.getElementById(\"Text1\").value); 
    if (i < q) { i += 1; document.getElementById(\"Text1\").value = i; 
    setTimeout(\"counter()\", 10)  } }";
ClientScript.RegisterClientScriptBlock(this.GetType(), "counter", str, true);
Button1.Attributes.Add("onclick", "counter()");

そして、これはhtml出力に表示されるものです:

<script type="text/javascript"> 
//<![CDATA[
function counter() { var q = Number(document.getElementById("TextBox1").value); var i = Number(document.getElementById("Text1").value); if (i < q) { i += 1; document.getElementById("Text1").value = i; setTimeout("counter()", 10)  } }//]]>
</script> 
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAPaDIYgDxN4mARW8/nWYR/uESCFkFW/RuhzY1oLb/NUVM34O/GfAV4V4n0wgFZHr3e02FqXa4CDb/Y32Jm7yDyEftd8wArFmKGvvW1nftcl6Q==" />
</div>
<div>
    <input name="TextBox1" type="text" value="1332073012" id="TextBox1" />
    <input type="submit" name="Button1" value="Button" onclick="counter();" id="Button1" />
    <span id="Text1">0</span>
</div>
</form>
</body>

onclick="counter()" メソッドを含むスクリプトとボタンが表示されますが、機能しません。理由がわかりません。同様のサンプルは見つかりませんでした。

4

1 に答える 1