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

本文关键字:结果 JavaScript 函数 调用 | 更新日期: 2023-09-27 18:19:53

我正在C#web应用程序中使用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#应用程序中实现JavaScript Stopwatch的人提供的更新解决方案。

 <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>

谢谢你的帮助。

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

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

  • 正如JohnFx所指出的,确保HTML处于良好的状态
  • 为名为"时间"的"文本"输入提供ID。
    <input type="text" name="time" id="timeInput"/>
  • 使用getElementById()引用元素document.getElementById("timeInput").value = ...
  • 如果行为不正常,请将alert(...)语句放在javascript中,以查看它的去向和产生的值

好吧,有一个问题是这行:

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

我想你需要在里面多留一些空间。

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

  • 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();