<span style="font-family:Microsoft YaHei;"><html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>閉包演示</title>
<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 οnlοad="init();">
<p>產品一</p>
<p>產品二</p>
<p>產品三</p>
<p>產品四</p>
<p>產品五</p>
</body>
</html> </span>
解決方式有兩種,
1、將變量 i 保存給在每個段落對象(p)上
<span style="font-family:Microsoft YaHei;"> function init() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i<pAry.length; i++ ) {
pAry[i].i = i;
pAry[i].onclick = function() {
alert(this.i);
}
}
} </span>
2、將變量 i 保存在匿名函數自身
<span style="font-family:Microsoft YaHei;"> function init2() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i<pAry.length; i++ ) {
(pAry[i].onclick = function() {
alert(arguments.callee.i);
}).i = i;
}
} </span>