javascript 函数执行问题

代码1:这是失败的代码,initTwo();没有发挥其功能window.onload=initOne;initTwo();functioninitOne(){docume... 代码1:这是失败的代码,initTwo();没有发挥其功能
window.onload=initOne;
initTwo();
function initOne() {
document.getElementById("pageBody").style.backgroundColor = "#00F";
}
function initTwo() {
document.getElementById("pageBody").style.color = "#F00";
}

代码2:这是成功的代码,initTwo();发挥了它的作用
window.onload=initOne;

function initOne() {
initTwo();

document.getElementById("pageBody").style.backgroundColor = "#00F";

}

function initTwo() {
document.getElementById("pageBody").style.color = "#F00";
}
为什么initTwo();在函数内部就能执行,而在外部就不行??
展开
 我来答
缓步莫迟疑C
2012-11-24 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6217
采纳率:73%
帮助的人:6482万
展开全部
原因不是在不在函数内部,而是你第一段代码中的initTwo调用是立即执行的,但这时浏览器应该还没有准备好pageBody,找不到对象自然要出错的.你应该在pageBody的HTML代码后面再调用initTwo,这样才可以.而第二段代码,由于initOne是在页面全部加载完成以后才执行的,这时浏览器已经为脚本准备好pageBody对象,访问它自然不会出错.
老刀正能量
2012-11-24 · TA获得超过2011个赞
知道大有可为答主
回答量:1487
采纳率:0%
帮助的人:1535万
展开全部
原因很简单:window.onload是指页面加载完成后执行的意思!
如果你要想让initTwo生效的话,就得把它放在pageBody该元素已经创建完的后面执行!
如:
<html>
<head>
<scrpit>
function initOne() {
document.getElementById("pageBody").style.backgroundColor = "#00F";
}
function initTwo() {
document.getElementById("pageBody").style.color = "#F00";
}
</script>
</head>
<body>
<div id="pageBody">测试一下</div>
<script>
initOne() ;
initTwo();
</script>
</body>
<html>

或者用window.onload如下:

<html>
<head>
<scrpit>
function initOne() {
document.getElementById("pageBody").style.backgroundColor = "#00F";
}
function initTwo() {
document.getElementById("pageBody").style.color = "#F00";
}
window.onload=function(){
initOne() ;
initTwo();
}
</script>
</head>
<body>
<div id="pageBody">测试一下</div>
</body>
<html>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式