推荐将script标签写在body的闭合标签后面,渲染完dom再加载脚本。去掉window.onload,将script写在body后,你试试看。
你的show
函数拿到外面来就行了。
函数作用域的问题,onclick的作用于的是全局作用域,onload里的show()是那个匿名函数的作用域,所以把show()放到外面就好
你写的函数在页面加载时就会被执行,这样的函数一般是用在页面需要初始化时,而你现在是需要在页面加载之后手动触发,使用的场景和具体的函数不对应
把外层window.onload去掉,改成下面这样
<script>
function show(){
document.getElementById(“box”).style.display="block";
}
看错了,同上
原因是你的 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";
};
})();