代码如下,应该是闭包的缘故,但还是比较含混,希望有人帮我解释一下。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
<style type="text/css">
p {background:gold;}
</style>
<script type="text/javascript">
function init() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i<pAry.length; i++ ) {
pAry[i].onclick = function() {
alert(i);
}
}
}</script>
</head>
<body onload="init();">
<p>p0</p>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
<style type="text/css">
p {background:gold;}
</style>
<script type="text/javascript">
function init() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i<pAry.length; i++ ) {
pAry[i].onclick = function() {
alert(i);
}
}
}</script>
</head>
<body onload="init();">
<p>p0</p>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
<style type="text/css">
p {background:gold;}
</style>
<script type="text/javascript">
function init() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i<pAry.length; i++ ) {
(function(i){
pAry[i].onclick = function() {
alert(i);
}
})(i) }
}</script>
</head>
<body onload="init();">
<p>p0</p>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
</body>
</html>
典型的问题。参考下
(function(i){
pAry[i].onclick = function() {
alert(i);
}
})(i)里面,括号放在放在function外面是什么写法啊?后面(i)又是什么写法? 能否解释一下?
})(i)i是实参,x是形参。
搜下 js闭包 一大堆解释。