日期:2014-05-16 浏览次数:20535 次
function setValidation() {    
    for (i = 0; i < alValidations.length; i++) { //alValidations是一个Array对象
        var instance = alValidations[i];       
        $("#" + instance.controlId).blur(function() {//instance.controlId是textbox的ID
            //事件处理代码
            test(instance.controlId);//只有最后的一个textbox能够正常执行test方法
        });
    }
}
//问题的关键在于,循环过程中每次得到的instance.controlId都会覆盖之前已经传入到test中的参数instance.controlId,
//有没有办法解决这个问题,使得传入test方法的参数保持当时循环时的instance.controlId的值?
//谢谢大家.
function setValidation() {    
    for (i = 0; i < alValidations.length; i++) { //alValidations是一个Array对象
        var instance = alValidations[i]; 
        (function(){      
        $("#" + instance.controlId).blur(function() {//instance.controlId是textbox的ID
            //事件处理代码
            test(instance.controlId);//只有最后的一个textbox能够正常执行test方法
        });
        })();
    }
}
------解决方案--------------------
function setValidation() {    
    for (i = 0; i < alValidations.length; i++) { //alValidations是一个Array对象
        var instance = alValidations[i];       
        $("#" + instance.controlId).blur(function() {//instance.controlId是textbox的ID
            //事件处理代码
            test(instance.controlId);//只有最后的一个textbox能够正常执行test方法
             //要是非要以前的话
            var Array;
          Array +=instance.controlId+",";//保存每个ID
           });
          var newinstanceId ;
          newinstanceId =Array.split(",");//得到所有的ID了
    }
}