-------初学小菜:关于函数调用的问题!------

boywdj 2002-11-04 04:46:22
请看下面代码:settimeout函数用VAR声明后执行和在ONLOAD里卖弄调用函数有区别吗?如果有,是何?
<html>
<head>
<title>title</title>
<script>
var buttonNotPressed1=setTimeout("alert('you must press ok button to continue')",3000);

function buttonNotPressed2(){
setTimeout("alert('you must press ok button to continue')",3000);
}
</script>
</head>
<body onload="openpolarbear2()">
</body>
</html>
...全文
32 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
meizz 2002-11-05
  • 打赏
  • 举报
回复
第一句里的JS语句没有写在函数里,而是直接写在最外层,这种语句在这个网页被浏览器装载显示的时候就自动运行了.而第二句是一个函数,这个函数指明在页面被load的时候运行,其实这两句只是一个声明了是装载时运行,一个是未声明而在页面被装载时就自动运行的,但这两句都是在页面被装载时运行的,所以我说这两句的运行效果是一样的.
虽然这两种写法运行效果是一样的,但是其运行的条件与时间顺序是不同的.第一句代码是当浏览器加载到这句语句时就运行了这句,而onload事件里加载函数是当所有的HTML代码流全部被加载完毕以后再执行的一个事件,所以第一句代码运行在第二句函数之前.另外,第一句运行的时候,其后面的代码还未被浏览器所加载,所以你对后面的对象进行操作时就会报该对象不存在的错误,因为此时这些代码都还未被浏览器加载,但在执行onload事件时,所有的代码都是已经被加载完毕的,所以在onload对网页的对象进行操作时就不会出错.你可以看到下面这个例子,就可以看出这些的不同.

<script language=javascript>
alert("aaaa");
document.all.txt.value="赋值时会出错";
function cc(){alert("bbbbb");document.all.txt.value="meizz";}
</script>

<body bgcolor=#00ff00 onload=cc()>
<input name=txt>

但是我将这些JS代码放在该对象出现之后,就不会出现错误,原因是在JS语句运行时该对象已经被浏览器加载了.

<body bgcolor=#00ff00 onload=cc()>
<input name=txt>

<script language=javascript>
alert("aaaa");
document.all.txt.value="赋值时会出错";
function cc(){alert("bbbbb");document.all.txt.value="meizz";}
</script>
LoneHome 2002-11-04
  • 打赏
  • 举报
回复
你的函数名写错了,我也粘贴错了,下面正确:

<html>
<head>
<title>title</title>
<script language=javascript>
var buttonNotPressed1=setTimeout("alert('you must press ok button to continue, This is No1')",1000);
function buttonNotPressed2(){
setTimeout("alert('you must press ok button to continue, this is NO2')",1000);
}
</script>
</head>
<body onload="buttonNotPressed2();">
</body>
</html>
LoneHome 2002-11-04
  • 打赏
  • 举报
回复
客户端代码是顺序执行的。
我支持楼顶的。自己用下面的代码试试:
<html>
<head>
<title>title</title>
<script>
var buttonNotPressed1=setTimeout("alert('you must press ok button to continue, This is No1')",3000);

function buttonNotPressed2(){
setTimeout("alert('you must press ok button to continue, this is NO2')",3000);
}
</script>
</head>
<body onload="openpolarbear2()">
</body>
</html>
boywdj 2002-11-04
  • 打赏
  • 举报
回复
请问:到底是谁说的对呀!
wangxj0600 2002-11-04
  • 打赏
  • 举报
回复
不是用var声明的问题,var buttonNotPressed1=setTimeout("alert('you must press ok button to continue')",3000);
是在页面onload之前运行的,然后在onload函数中运行buttonNotPressed2()
meizz 2002-11-04
  • 打赏
  • 举报
回复
这样的代码没有区别.

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧