日期:2014-05-16  浏览次数:20413 次

请教高手!还是关于JS中onclick函数的参数传递的一个问题!
创建了一个表格的“类”,想实现单击任何一个单元格弹出该单元格所在的行与列。在网上搜到一般使用这个方法来实现加载参数:btn.onclick=function(){class.methode(par1, par2)}; 
可是在我如下的html中,对于每一个单元格的参数貌似都是最后1行最后1列。到底哪里出了问题?求教高人回答。拜谢先!!

<!DOCTYPE html>
<html>
<head>click on the table</head>
<body>
<script language="javascript">
function mytb() {
var tb=this;
this.pal=null; //panel
this.tbl=null; //table

this.inti = function() {
tb.pal=document.createElement("div");
document.body.appendChild(tb.pal);
tb.tbl=document.createElement("table");
tb.pal.appendChild(tb.tbl);

//generate all cells
var rw=null;
var cl=null;
for (var i=0; i<6; i++)
{
rw=tb.tbl.insertRow(i);
for (var j=0; j<7; j++)
{
cl=rw.insertCell(j);
cl.style.cssText="border:solid 1px #a0a0ff;";
cl.innerHTML=i*10+j;
cl.onclick=function(){tb.sltcell(i,j);}
}
}
}
this.sltcell=function (nrow, ncol) {
alert("row="+nrow+" col="+ncol);
}
this.inti();
}
var c=new mytb();

</script>
</body>
</html>
JavaScript 参数传递

------解决方案--------------------
闭包

可以参考:
http://www.cnblogs.com/rubylouvre/archive/2009/07/24/1530074.html

http://www.cnblogs.com/frankfang/archive/2011/08/03/2125663.html

http://www.cnblogs.com/xiaotie/archive/2011/08/03/2126145.html
------解决方案--------------------
cl.onclick=function(){tb.sltcell(i,j);}
改成


cl.onclick=(function(i,j){ return  function(){
tb.sltcell(i,j);
}} )( i,j )