原因是你的 show() 方法是在 onload() 函数内部定义的,外面访问不到。HTML 的事件属性中调用的方法都需要在全局范围内定义 方法一 把 show() 强制定义在 window 对象上,因为对于网页来说 window 就是全局对象 window.onload = function() { var oBox = document.getElementById("box"); window.show = function() { oBox.style.display = "block"; }; }; 方法二 在 show 中去取 oBox,也就是 @rubine 的解答。 这个方法由于是在 DOM 生成前定义的脚本,有可能在 box 还没加入 DOM 树的时候就触发了事件,这时候在 show() 里取不到 box。 把脚本放在 </body> 前去就好。 方法三 写个闭包 window.show = (function() { var oBox; window.onload = function() { oBox = document.getElementById("box"); }; return function() { oBox.style.display = "block"; }; })();
把外层window.onload去掉,改成下面这样 <script> function show(){ document.getElementById(“box”).style.display="block"; }
原因是你的
show()
方法是在onload()
函数内部定义的,外面访问不到。HTML 的事件属性中调用的方法都需要在全局范围内定义
方法一
把
show()
强制定义在window
对象上,因为对于网页来说window
就是全局对象方法二
在 show 中去取 oBox,也就是 @rubine 的解答。
这个方法由于是在 DOM 生成前定义的脚本,有可能在
box
还没加入 DOM 树的时候就触发了事件,这时候在show()
里取不到box
。把脚本放在
</body>
前去就好。方法三
写个闭包