小白求大神指点

qq_37046350 2019-02-01 03:18:32
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#box{
width: 200px;
height: 200px;
background-color: #000;
}
</style>
<script>
window.onload = function () {
function Color(color) {
var box = document.getElementById("box");
box.style.backgroundColor = color;
}
}
</script>
</head>

<body>
<input type="button" value="红" onclick="Color('red')">
<input type="button" value="绿" onclick="Color('green')">
<input type="button" value="蓝" onclick="Color('blue')">
<div id="box"></div>
</body>

</html>



求大神指点为什么去掉window.onload后js无法运行,会失效,急急
...全文
876 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
風灬雲 2019-02-12
  • 打赏
  • 举报
回复
window.onload = function () { window.Color=function(color) { var box = document.getElementById("box"); box.style.backgroundColor = color; } }
weixin_44644690 2019-02-11
  • 打赏
  • 举报
回复
学到了学到了
阿树树树 2019-02-10
  • 打赏
  • 举报
回复
拜师,有收徒的嘛
weixin_44124917 2019-02-08
  • 打赏
  • 举报
回复
nmm81101 2019-02-03
  • 打赏
  • 举报
回复
一楼的老哥正解,作用域有问题,而且onload调用的本来就是个匿名函数。你的意思如果是页面加载完成后调用一次,点击按钮后还要继续调用的话可以把color函数写到onload外面来,然后onload里面直接写color函数名调用就OK。
天际的海浪 2019-02-01
  • 打赏
  • 举报
回复
引用 2 楼 qq_37046350 的回复:
对对,我打错了,大神请问为什么onclick访问不到局部作用域
因为Color函数处于window.onload的事件处理函数的局部作用域中的啊。 只能在这个事件处理函数中访问。在别的地方都访问不到。
qq_37046350 2019-02-01
  • 打赏
  • 举报
回复
对对,我打错了,大神请问为什么onclick访问不到局部作用域
天际的海浪 2019-02-01
  • 打赏
  • 举报
回复
你说反了,应该是加了window.onload后js才无法运行吧。 因为Color函数处于另一个函数的局部作用域中,在全局作用域中访问不到。 要去掉window.onload,让Color函数处于全局作用域中才行。

87,997

社区成员

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

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