var ids1;//objects id1
var ids2;//objects id2
var infos;//input information
var errs;//error information
function arrInit(){
    ids1 = new Array();
    ids2 = new Array();
    infos = new Array();
    errs = new Array();
    ids1[1] = "username";
    ids1[2] = "password1";
    ids1[3] = "password2";
    ids1[4] = "rename";
    ids1[5] = "cid";
    ids1[6] = "email";
    ids1[7] = "phone";
    ids1[8] = "vcode";
    for (var i = 1; i < 9; i++) {
        ids2[i] = "msg" + i;
    };
    errs[1] = "用户名格式错误";
    errs[2] = "请输入密码";
    errs[3] = "两次密码输入不一致";
    errs[4] = "请输入真实姓名";
    errs[5] = "无效的身份证";
    errs[6] = "无效的邮箱";
    errs[7] = "无效的手机号";
    errs[8] = "请输入验证码";
    infos[1] = "用户名长度6-20位字符,由字母、组成,长度不超过20个英文。";
    infos[2] = "密码长度6-20位字符,最少包含一个字母。";
    infos[3] = "请再次输入您的账户密码";
    infos[4] = "请填写与注册身份证一致的姓名";
    infos[5] = "请填写真实有效的身份证";
    infos[6] = "此邮箱用于取回和修改密码,请填写真实有效的邮箱";
    infos[7] = "请填写有效的手机号";
}function eventBind(){
    arrInit();
    for (var i = 1; i < 9; i++) {
        bind(ids1[i], "focus", function(){
alert(ids1[1]);
            showMsg(ids2[i], infos[i]);
        });
    };
    }function bind(id, type, func){
    if (typeof id == "string") {
        var obj = $(id);
        if (obj != null) {
            if (window.attachEvent) {
                obj.attachEvent("on" + type, func);
            }
            else {
                obj.addEventListener(type, func, false);
            }
        }
    }
}function showMsg(id, value){
    setHTML(id, value);
}
//当发生focus事件调用showMsg事件的时候
//传的参数id,和value都是undefined
//请问怎么解决这个问题
//按下面这样写有事可以的
//        bind(ids1[1], "focus", function(){
// alert(ids1[1]);
//            showMsg(ids2[1], infos[1]);
//      });
 

解决方案 »

  1.   


    function eventBind() {
    arrInit();
    for ( var i = 1; i < 9; i++) {
    bind(ids1[i], "focus", function(a, b) {
    return function() {
    showMsg(a, b);
    };
    }(ids1[i], infos[i]));
    }
    ;
    }
      

  2.   


    for (var i = 1; i < 9; i++) {
    with ({i:i}) {
            bind(ids1[i], "focus", function(){
                // alert(ids1[1]);
                showMsg(ids2[i], infos[i]);
            });
    }
        };