JavaScript:错误“对象不支持此操作”

时间:2012-04-22 08:51:51

标签: javascript html

计数器的

The code会出错

a similar snippet

我无法找出任何正当理由......

正在考虑的问题是:

<input type=button name="but2" value="stop" onClick="window.clearTimeout(ID);">    

完整的代码是:

<html>
        <head>
        <script language="JavaScript">
            var counter=0;
            ID=window.setTimeout("start();",2000);
            function start()
            {
                counter++;
                document.forms[0].elements[0].value=counter;
                ID=window.setTimeout("start();",2000);
            }
        </script>
        </head>
        <body>
            <form name="frm1">
                <input type="text" name="timer1">
                <input type="button" name="but1" value="start" onClick="counter=0; start();">
                <input type=button name="but2" value="stop" onClick="window.clearTimeout(ID);">
            </form>
        </body>
</html>

3 个答案:

答案 0 :(得分:1)

关于那段代码的一切都有错。请在将来尝试避免使用该教程。

这是一个工作脚本:http://jsfiddle.net/teresko/qTJPx/

您的脚本的问题列表:

  • 缺少doctype
  • language="JavaScript"已弃用
  • 变量IDcounter最终在全球范围内
  • 使用html附加活动
  • 错误地使用setTimeout
  • 当DOM还没有准备好时,<script>中使用的
  • <head>标记

..而且我甚至不想过去那些“类似的片段”,它看起来像所有权利应该被埋葬的东西。

当你添加JavaScript代码时,它应该在结束</body>标记之前,因为在那个阶段DOM已经准备就绪,但是页面还没有开始渲染。

我强烈建议您学习一些用于学习JavaScript的新材料。

答案 1 :(得分:0)

使用window.start代替onClick事件的开始。当您使用代码而不是处理程序的函数时,IE可能不会创建窗口上下文。

答案 2 :(得分:0)

嗨,我想在这一行你得到了错误

ID=window.setTimeout("start();",2000);

对吗?

把这段代码

var  ID=window.setTimeout("start();",2000);

你不会得到这个JavaScript:错误Object doesn't support this action错误。