<script>
function showCont()
{
var bt=document.getElementById("Play")
var s=document.getElementById("fla")
var f=document.getElementById("show")
if(s.style.display=="")
{
s.style.display="none"
f.style.display=""
bt.innerText="点击缩进全文"
}
else
{
s.style.display=""
f.style.display="none"
bt.innerText="点击展开全文"
}
}
</script>
【引申】:
1. 名叫 div 的变量有一个对 handler 的引用(因为 handler 是它的一个属性)
2. handler 也同样有一个对 div 的引用(因为 div 处于它的作用域内。这是js闭包的特性,函数内的代码可以引用函数外的变量)
3. 这就造成了循环引用,最后两个变量都不会被销毁,成了内存泄露
按照这个说法,像下面这样写代码就不会出现这种内存泄露了。
因为 div 变量不再处于 handler 函数的作用域之中。
o[i].onclick = (function(n1,p1,s1){if (n1.innerHTML == "...展开") {
n1.innerHTML = "收起"
p1.innerHTML = s
} else if(n1.innerHTML == "收起"){
n1.innerHTML = "...展开"
p1.innerHTML = s1.substring(0, 30)
}
})(n,p,s)