<!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无法运行,会失效,急急

解决方案 »

  1.   

    你说反了,应该是加了window.onload后js才无法运行吧。因为Color函数处于另一个函数的局部作用域中,在全局作用域中访问不到。
    要去掉window.onload,让Color函数处于全局作用域中才行。
      

  2.   

    对对,我打错了,大神请问为什么onclick访问不到局部作用域
      

  3.   


    因为Color函数处于window.onload的事件处理函数的局部作用域中的啊。
    只能在这个事件处理函数中访问。在别的地方都访问不到。
      

  4.   

    一楼的老哥正解,作用域有问题,而且onload调用的本来就是个匿名函数。你的意思如果是页面加载完成后调用一次,点击按钮后还要继续调用的话可以把color函数写到onload外面来,然后onload里面直接写color函数名调用就OK。
      

  5.   

     window.onload = function () {
                window.Color=function(color) {
                    var box = document.getElementById("box");
                    box.style.backgroundColor = color;
                }
            }