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

为什么这个代码直接调用不能显示在文本框里?

<!DOCTYPE HTML>

<html>

<head>

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

<title>计时器</title>

<script type="text/javascript">

   function clock(){

      var time=new Date();                

      document.getElementById("clock").value = time;

   }

  clock();

</script>

</head>

<body>

  <form>

    <input type="text" id="clock" size="50"  />

  </form>

</body>

</html


正在回答

4 回答

按你写的代码,会先执行<script>里的函数clock(),再加载页面(即id为clock的文本框)。所以当你调用clock()函数,执行“document.getElementById("clock").value = time;”,是还没有id=clock这个文本框的,所以就不能搜索到它,并给它赋值了。如果你把<script>整段写在“<input type="text" id="clock" size="50"  />”后面,就会发现,是可以调用的。

再来说为什么同样写在<head>的里的js,setInterval(clock,1000)就可以完成调用。因为setInterval()是window对象的方法,本身定义就是【加载页面后】每隔指定时间执行代码,所以用它的时候,它会在页面加载完,即先有文本框,再调用clock(),所以“document.getElementById("clock").value = time;”这句就有了意义,就能执行了。

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

一失手成千古恨 提问者

非常感谢!
2016-03-18 回复 有任何疑惑可以回复我~
#2

钰与宸 回复 一失手成千古恨 提问者

不客气。
2016-03-21 回复 有任何疑惑可以回复我~

用onload=clock()调用试试


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

把第11行的clock();改成:

setTimeout(clock);

就行了。

你光写clock()是不能执行该函数的

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

一失手成千古恨 提问者

这个肯定行啦,不是说直接写函数名就可以调用函数的吗?为什么这个不可以?
2016-03-11 回复 有任何疑惑可以回复我~

我也不知道。。求问

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

举报

0/150
提交
取消

为什么这个代码直接调用不能显示在文本框里?

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