qq_40805263 2018-10-23 05:39 采纳率: 41.7%
浏览 557
已采纳

关于javascript中的一点疑问

head
script
var c=0
var t

function timedCount()
{
c=c+1
t=setTimeout("timedCount()",1000)
}
document.getElementById('txt').value=c
function stopCount()
{
clearTimeout(t)
}
/script
/head

body
form
input type="button" value="开始计时!" onClick="timedCount()"
input type="text" id="txt"
input type="button" value="停止计时!" onClick="stopCount()"
/form

p
请点击上面的“开始计时”按钮。输入框会从 0 开始一直进行计时。点击“停止计时”可停止计时。
/p

/body

我想问为什么运行上面代码时控制台会报错,但是如果把script部分移到移到body下面,代码就不会报错,为什么会这样的
代码没有加<>是因为好像加了<>这个论坛会自动执行我问题的代码

  • 写回答

3条回答 默认 最新

  • 天际的海浪 2018-10-23 08:16
    关注

    你的document.getElementById('txt').value=c这行代码是在全局环境下的。
    在全局环境下的代码是在页面加载阶段从上到下一边加载一边执行的,这时处于代码下面的txt元素还没有加载完,访问不到。
    要把script放在页面body下面,或者把代码放到window.onload事件(页面加载完成后触发)中才可以。

    不过你的document.getElementById('txt').value=c应该放到timedCount函数中吧,不然txt元素是不会实时更新的。

    问答区用的编辑器是 markdown 编辑器,要使用markdown语法发帖子。
    markdown语法会解析部分html标签。
    要发表html代码。要用上面工具栏的第6个按钮,
    或者直接输入:
    ```
    html代码
    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!