我想要给我的多个label 动态添加点击事件,但是我目前的方法在添加点击事件后,传进去的参数都是最后一次赋值的参数。
有没有哪位大哥知道怎么解决?
下面是我的代码。
    
for(var i = 0; i < val.xsd.xsd.length; i++)
    {
        document.getElementById("ctl00_ContentBody_UltraWebTab1__ctl0_CheckLineShow1_Label" + (i + 1)).innerHTML = val.xsd.xsd[i].XSDMC;
        var xsdbh = val.xsd.xsd[i].XSDBH;
        var lxid = val.xsd.xsd[i].LXID;
        document.getElementById("ctl00_ContentBody_UltraWebTab1__ctl0_CheckLineShow1_Label" + (i + 1)).onclick = function showModifyDlg(){
    var res=openStdDlg("CheckPointModifyDlg.aspx?XSDBH="+xsdbh+"&LXID="+lxid,'',475, 430);
    if (res == "ok")
    {
       __doPostBack();
       __doPostBack('BtnSelectChg','');
    }
    else
    {
       return false;
    }
        };

解决方案 »

  1.   

        for(var i = 0; i < val.xsd.xsd.length; i++)
        {
            document.getElementById("ctl00_ContentBody_UltraWebTab1__ctl0_CheckLineShow1_Label" + (i + 1)).innerHTML = val.xsd.xsd[i].XSDMC;
            var xsdbh = val.xsd.xsd[i].XSDBH;
            var lxid = val.xsd.xsd[i].LXID;
            document.getElementById("ctl00_ContentBody_UltraWebTab1__ctl0_CheckLineShow1_Label" + (i + 1)).onclick = function showModifyDlg(){
        var res=openStdDlg("CheckPointModifyDlg.aspx?XSDBH="+xsdbh+"&LXID="+lxid,'',475, 430);
        if (res == "ok")
        {
           __doPostBack();
           __doPostBack('BtnSelectChg','');
        }
        else
        {
           return false;
        }
            };
      

  2.   

     for(var i = 0; i < val.xsd.xsd.length; i++)
        {
            document.getElementById("ctl00_ContentBody_UltraWebTab1__ctl0_CheckLineShow1_Label" + (i + 1)).innerHTML = val.xsd.xsd[i].XSDMC;
            var xsdbh = val.xsd.xsd[i].XSDBH;
            var lxid = val.xsd.xsd[i].LXID;
            document.getElementById("ctl00_ContentBody_UltraWebTab1__ctl0_CheckLineShow1_Label" + (i + 1)).onclick = (function(xsdbh,lxid){ return function (xsdbh,lxid){
        var res=openStdDlg("CheckPointModifyDlg.aspx?XSDBH="+xsdbh+"&LXID="+lxid,'',475, 430);
        if (res == "ok")
        {
           __doPostBack();
           __doPostBack('BtnSelectChg','');
        }
        else
        {
           return false;
        }
            };
       })(xsdbh,lxid);
    要用闭包 生成每个按钮事件的独立变量
    不然所有按钮的事件看到的都是相同的 xsdbh,lxid