为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在script里面直接调用函数不好使

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
  var num=200;
  function startCount() {
    document.getElementById('count').value=num;
    num=num-1;
     var a=setTimeout("startCount()",2)
  }
 startCount()
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>

为什么直接调用函数就没反应,放在input点击按钮里面调用函数就就可以成功呢


正在回答

7 回答

第14行写这句: window.onload=startCount;

0 回复 有任何疑惑可以回复我~

我的代码:


<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>计时器</title>

<script type="text/javascript">

  var num=0;

  function startCount() {

    document.getElementById('count').value=num;

    num++;

    setTimeout("startCount()",1000);

  }

  setTimeout("startCount()",1000);

</script>

</head>

<body>

<form>

<input type="text" id="count" />

</form>

</body>

</html>


0 回复 有任何疑惑可以回复我~

先加载的js代码 后加载的input

0 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5bdd098f0001b16907080433.jpg

你执行startCount()的时候那个count的元素还没加载进来,JS就报错了,所以就不行了

0 回复 有任何疑惑可以回复我~

个人理解应该要通过一些特定的事件才能触发方法,不然的话页面不知道你要采取怎样的方式去执行方法,因此可以像楼上所说的通过onload(当打开页面时执行),也可以用onclick点击或onmouseover(鼠标移动到上面执行)等事件触发

0 回复 有任何疑惑可以回复我~

你可以添加onclick事件触发,或者添加

window.onload=function(){

  startCount();

  }

来触发函数

1 回复 有任何疑惑可以回复我~

因为你的这些功能都定义在function里面,默认是不会触发的,因此要通过一些点击事件来触发,因此要放在点击按钮里面触发

0 回复 有任何疑惑可以回复我~
#1

whiteDive

默认当然不触发 楼主的意思是通过startCount() 触发为什么不行 ,事件触发和直接调用触发不是一样吗
2018-10-23 回复 有任何疑惑可以回复我~
#2

怀揣梦想的小白 回复 whiteDive

不好意思,我没审清问题
2018-10-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么在script里面直接调用函数不好使

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信