全部代码:
<!DOCTYPE HTML">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>事件的循环绑定</title>
<style>
ul {
background: #ccc;
padding: 10px;
}
ul li {
margin: 15px;
background: #84cf39;
color: #fff;
list-style: none;
padding: 5px;
}
</style>
<script type="text/javascript">
var $ = function(elmID){
return document.getElementById(elmID);
}
window.onload = function(){
var listOne = $('listOne').getElementsByTagName('li');
var listTwo = $('listTwo').getElementsByTagName('li');
var resultCon = document.getElementsByTagName('div')[0].getElementsByTagName('span')[0];
function Fn(num){
this.fn = function(){
resultCon.innerHTML = 'listOne-' + num;
};
}
for (var i = 0; i < listOne.length; i++) {
var f = new Fn(i);
listOne[i].onclick = f.fn;
}
for (var i = 0; i < listTwo.length; i++) {
listTwo[i].onclick = function(){
var _i = i;
return function(){
resultCon.innerHTML = 'listTwo-' + _i;
}
}();
}
}
</script>
</head>
<body>
利用new来形成闭包做循环绑定
<ul id="listOne">
<li>
baby
</li>
<li>
honey
</li>
</ul>
利用匿名函数形成闭包
<ul id="listTwo">
<li>
baby
</li>
<li>
honey
</li>
</ul>
<div>
result:<span></span>
</div>
</body>
</html>
利用new对象的方法绑定:
function Fn(num){ this.fn = function(){ resultCon.innerHTML = 'listOne-' + num; }; } for (var i = 0; i < listOne.length; i++) { var f = new Fn(i); listOne[i].onclick = f.fn; }
利用闭包的方式绑定
for (var i = 0; i < listTwo.length; i++) {
listTwo[i].onclick = function(){
var _i = i;
return function(){
resultCon.innerHTML = 'listTwo-' + _i;
}
}();
}