0
<body onload="timer()">
        <style type="text/css">
        #time{
        font-size:50pt;
        }
        #body 
        {
            background-color:#F3F3F3;
        }
        </style>
        <script type="text/javascript">
            var digiclock = document.getElementById("<%= HiddenFieldMinutes.ClientID %>").value;
            i = 0;
            function timer() {
                var digiformat = "";
                if (i > 3599) {
                    var H = Math.floor(i / 3600);
                }
                else {
                    var H = 0;
                }

                var M = i - (H * 3600)

                if (M > 59) {
                    M = Math.floor(M / 60)
                }
                else {
                    M = 0
                }
                var S = i - (M * 60)
                if (H < 10) {
                    H = "0" + H;
                }
                if (M < 10) {
                    M = "0" + M;
                }
                if (S < 10) {
                    S = "0" + S;
                }

                document.getElementById('time').innerHTML = H + ":" + M + ":" + S;
                setTimeout('timer()', 1000);
                i++;
            }
        </script>
            <table style="background-color:#F3F3F3;">
                <tr>
                <td><div><center><p style="font-family:Calibri;font-size:1.8em;color:#104E8B;">Total Elapsed Time</p> </center></div>
                </td></tr>
                <tr>
                <td><div id="time"><center>90</center></div>
                </td></tr>
                <tr>
                <td>
                <center>
                <form id="Form1" runat="server">
                <asp:HiddenField ID="HiddenFieldMinutes" runat="server" Value="" />
                    <asp:Button ID="btnStop" runat="server" Text="Stop" 
                        style="width:150px;height:30px;font-weight:bold;background-color:#104E8B;color:White;border:1px solid" 
                        onclick="btnStop_Click" /></form></center>
                        <input id="HiddenTaskname" type="hidden" value="123" runat="server" />
                    </td></tr>
            </table>

正如您在上面看到的,我试图创建一个从用户提供的指定时间开始的时钟。我将开始时间段存储在隐藏字段中。此页面的此页面加载背后的代码如下:-

protected void Page_Load(object sender, EventArgs e)
    {
        HiddenFieldMinutes.Value = null;
        if (! IsPostBack)
        {
            //Checking for any query string
            if (Request["Code"] != null)
            {
                _elapsedNonProdTimeEntryID =Convert.ToInt32 (Request["Code"].ToString());
                _starttime = _nonProduction.GetStartTimeOfActiveTImeEntryID(_elapsedNonProdTimeEntryID);

                TimeSpan elapsedtimespan = System.DateTime.Now.Subtract(_starttime);
                string hh = elapsedtimespan.Hours.ToString();
                string mm = elapsedtimespan.Minutes.ToString();
                string ss = elapsedtimespan.Seconds.ToString();
                _differenceOfTimeSpan = hh + ":" + mm + ":" + ss;                    
                HiddenFieldMinutes.Value = _differenceOfTimeSpan;
                //ScriptManager.RegisterStartupScript(this, this.GetType(), "CloCkTImer", "javascript:timer(); ", true);                    
            }
        }
    }

但是当我调试时,我在这条线上遇到错误。var digiclock = document.getElementById("<%= HiddenFieldMinutes.ClientID %>").value;

请帮助我改进此网页并完全满足我的要求。

4

2 回答 2

0

我做了一个几乎类似于你的代码的测试,看看这里

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript" language="javascript">
    function timer() {
        alert(document.getElementById("<%= Hiddenfield1.ClientID %>").value);
    }
</script>
</head>
<body onload="timer();">
<form id="form1" runat="server">
<div>
    <asp:hiddenfield ID="Hiddenfield1" runat="server" value="static value"></asp:hiddenfield>
</div>
</form>

这是CS代码

 protected void Page_Load(object sender, EventArgs e)
{
    Hiddenfield1.Value = "dynamic value";
}

它给出动态值作为输出。所以这意味着你获取值的方式很好我认为还有其他问题,比如你试图在回发或另一个事件上检查隐藏字段值,如果是这样,请在更新面板中使用隐藏字段那么您将获得隐藏字段值,否则您将继续收到相同的错误。

希望它可以帮助你。

于 2012-07-11T10:44:56.733 回答
0

问题在于脚本和 html 元素的顺序。在呈现 html 之前调用 document.getElementById(DOM 尚未准备好)。只需将脚本块放在 html 之后。

于 2014-03-26T11:43:17.273 回答