调用JavaScript函数后我无法得到结果

时间:2012-01-10 23:51:19

标签: c# javascript

我在C#web Aplication中使用Javascript StopWatch。但是我没有从javascript获得输出。以下是我的代码。

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <script type="text/javascript" language="JavaScript">
            var state = 0;
            function startstop() {
                if (state == 0) {
                    state = 1;
                    then = new Date();
                    then.setTime(then.getTime() - ms);
                } else {
                    state = 0;
                    now = new Date();
                    ms = now.getTime() - then.getTime();
                    document.stpw.time.value = ms;
                }
            }
            function swreset() {
                state = 0;
                ms = 0;
                document.stpw.time.value = ms;
            }
            function display() {
                setTimeout("display();", 50);
                if (state == 1)  {now = new Date();
                ms = now.getTime() - then.getTime();
                document.stpw.time.value = ms;
            }
        }
        </script>
    </head>
    <body onload="display()">
        <form id="form1" runat="server">
            <div>
                Time:
                <input type="text" name="time"/>
                <input type="button" name="ssbutton" value="Start/Stop"    onclick="javascript:startstop()"/>
                <input type="button" name="reset" value="Reset" onclick="javascript:swreset()"/>

            </div>
        </form>
    </body>
</html>

我是javascript的新手,我在哪里做错了?谢谢......

Udate :最后我得到错误并解决了。以下是希望在C#Application中实现JavaScript秒表的人的更新解决方案。

 <html>
 <head>
 <script type="text/javascript">
 var ms = 0;
 var state = 0;
 var then;
 var now;
 ms = new Date();
 function startstop() 
 {

     if (state == 0) 
     {
         state = 1;
         then = new Date();
         then.setTime(then.getTime() - ms);
     }
     else
      {
         state = 0;
         now = new Date();
         ms = now.getTime() - then.getTime();
         document.getElementById('timeInput').value = ms;
     }
 }
 function swreset() {
     state = 0;
     ms = 0;
     document.getElementById('timeInput').value = ms;
 }
 function display() {
     ms = new Date();

     setTimeout("display();", 50);
     if (state == 1) {
                      now = new Date();
                      ms = now.getTime()-then.getTime();
                      document.getElementById('timeInput').value = ms;
     }
     }
 </script>
 </head>
 <body onload="display()">
 <form>
    Time:
    <input type="text" name="time" id="timeInput"/>
    <input type="button" name="ssbutton" value="Start/Stop" onclick="javascript:startstop()"/>
    <input type="button" name="reset" value="Reset" onclick="javascript:swreset()"/>



</form>
</body>
</html>

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

嗯,这一行有一个问题:

 <inputtype="button"name="ssbutton"value="Start/Stop"    onclick="javascript:startstop()"/>

我认为你需要一些额外的空间。

你也多次引用document.stpw.time,但我的html中没有看到stpw。

答案 1 :(得分:1)

以下是一些初步步骤:(这并不意味着一切都会奏效,但肯定会有所帮助。)

  • 正如JohnFx所指出的,请确保HTML状态良好。
  • 将名为“时间”的“文字”输入作为身份证明 <input type="text" name="time" id="timeInput"/>
  • 使用getElementById()引用元素 document.getElementById("timeInput").value = ...
  • 如果事情行为不正确,请在javascript中添加alert(...)个语句,以查看其进展情况以及它出现的值。

答案 2 :(得分:1)

  • onclick=...onload=...不好。
  • javascript:没用。
  • language=JavaScript没用了
  • runat=server没用。
  • 您没有标题,因此没有有效的HTML。
  • 您的州和职能是全球性的
  • 您不使用var ms = ...
  • document.stpw不存在。
  • 您可能需要为表单document.stpw命名,document.<formName>表示不好。请改用document.forms.stpw
  • setTimeout(string)不好。
  • 您没有以if (...) {now = new Date();
  • 结束}