关于javascript闭包的问题。。求助啊。。。
发布网友
发布时间:2022-04-30 16:55
我来回答
共4个回答
热心网友
时间:2022-05-17 00:10
html解析时是从上到下按顺序来的,你的代码在解析js时下面的DOM内容还没解析到,这样js就没有发挥作用,解决办法有二:
1.用window.onload把js包在里面,让其在页面加载完毕后在执行js代码。
2.为js绑定一个事件,利用事件触发js
热心网友
时间:2022-05-17 01:28
<html>
<head>
<script type="text/javascript">
function hide() {
var obj;
function invokeHide(){
obj= document.getElementById("main");
obj.style.display = "none";
}
return invokeHide;
}
var c=hide();
c();
</script>
</head>
<body>
<div id="main" onclick="c()">
Welcome you!
</div>
</body>
</html>
LZ对这种写法有兴趣不
热心网友
时间:2022-05-17 03:02
。。。
主要是闭包的作用!
闭包定义了匿名函数,然后直接执行!
这是闭包的一个特性.
因为执行的时候还没加载到DOM.
所以会出现NULL的对象。
你吧把闭包在</body>的前面。
热心网友
时间:2022-05-17 04:54
<html>
<head>
</head>
<body>
<div id="main">Welcome you!</div>
</body>
<script type="text/javascript">
(
function(id){
var obj = document.getElementById(id);
obj.style.display = "none";
}
)("main");
</script>
</html>追问好像有点懂了、、有没有其他方法在延迟javascript脚本等dom加载完才执行啊、、除了window.onload调用外的其他方法
追答应该是body内容还没创建吧。。我猜的。。呵呵