jsバインディングイベントの印刷インデックスの方法の整理
2161 ワード
よくある問題です.domオブジェクトバインディングイベントはインデックスを印刷します.
<html >
<body>
<p>111</p>
<p>222</p>
<p>333</p>
<p>444</p>
<p>555</p>
</body>
</html>
<script type="text/javascript">
var p = document.getElementsByTagName("p");
var len = p.length;
function fn1(){
for(var i=0; i<len; i++){
p[i].setAttribute("x",i+1);
p[i].onclick = function(){
alert(this.getAttribute("x"));
};
}
}
//fn1();
function fn2(){
for(var i=0; i<len; i++){
p[i].onclick = function(){
alert(arguments.callee.x);
}
p[i].onclick.x = i+1;
//or
/*
(p[i].onclick = function(){
alert(arguments.call.x);
}).x = i+1;
*/
}
}
//fn2();
// ----------------- 。
function fn3(){
for(var i=0; i<len; i++){
p[i].onclick = (function(x){
var y = i+1;
return function(){ // ,
alert(x); //
alert(y); // , .
};
})(i+1);
}
}
//fn3();
function fn4(){
for(var i=0; i<len; i++){
(function(x){ // 。 fn3 。
var y = i+1; //fn3 fn4 , fn3 ,fn4 。
p[i].onclick = function(){
alert(x);
alert(y);
}
})(i+1);
}
}
//fn4();
// ----------------------
function fn5(){
for(var i=0; i<len; i++){
var str = "alert("+(i+1)+")"; // new Function 。
p[i].onclick = new Function(str); // p[i] .
}
}
fn5();
//
/*
fn5 , new Function , 。
fn3,fn4 , i 。 。
fn1,fn2 , , 。
*/
</script>