document.getElementById(objSearchHelper.t1.id)这样也取不到
我将参数改成从页面源文件查找出的id传进去也获取不到对象

解决方案 »

  1.   

    谢谢楼上的有知道的朋友么?
    在回调函数里可以设置document.title及window.status的值
      

  2.   

    如果在回调用函数中跟踪调试:
    alert(objSearchHelper.t1.id)弹出的值,是正确的。但用alert(objSearchHelper.t1 == document.getElementById(objSearchHelper.t1.id)) 返回的值为flase
      

  3.   

    xmlhttp.onreadystatechange = function() { GetResultFromServer(objSearchHelper) }; onreadystatechange的方法是在其他地方调用的,在那个地方还没有定义呢最简单的方法就是把objSearchHelper定义成全局变量。
      

  4.   

    定义为全局变量也不能改变样式var xmlhttp;
    var objSearchHelper = new Object();   //定义为全局变量
    function ValidateInput(type, runatserver) {
        var input = event.srcElement.value;
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        //var objSearchHelper = new Object();
        objSearchHelper.t1 = G("txtDisplay");
        objSearchHelper.v = G("hfValue");
        objSearchHelper.t2 = G("hfText");
        objSearchHelper.c = G("hfCode");
        objSearchHelper.runatserver = runatserver;
        xmlhttp.onreadystatechange = function() { GetResultFromServer(objSearchHelper) };
        xmlhttp.open("get", "/UserControls/SearchHelper.aspx?type=" + type + "&s=" + input);
        xmlhttp.send();
    }
    function GetResultFromServer(objSearchHelper) {
        if (xmlhttp.readystate == 4 && xmlhttp.status == 200) {
            var result = xmlhttp.responseText;
            if (result != "false") {
                result = result.split(",");
                objSearchHelper.t1.value = result[1];
                objSearchHelper.v.value = result[0];
                objSearchHelper.t2.value = result[1];
                objSearchHelper.c.value = result[2];
                objSearchHelper.t1.style.color = "";
                if (objSearchHelper.runserver) __doPostBack('', '');
            } else {
                objSearchHelper.t1.style.color = "red";
            }
        }
    }
      

  5.   

    抱歉,代码如下:
    在SearchHelper.aspx页面中的Page_Load事件中的源文件如下:
    protected void Page_Load(object sender, EventArgs e)
            {
                if (Request.QueryString["s"] != null)
                {
                    Response.Clear();
                    string input = Request.QueryString["s"].Trim();
                    if (Regex.IsMatch(input, @"^\w+$"))
                    {
                        Response.Write(“true");
                    }
                    else
                    {
                        Response.Write("false");
                    }
                    Response.End();
                }
            }
      

  6.   

    呵呵,LZ分析一下变量的scope就能知道为什么了...you can try this onevar xmlhttp; 
    function ValidateInput(type, runatserver) { 
        var input = event.srcElement.value; 
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
        var objSearchHelper = new Object(); 
        objSearchHelper.t1 = G("txtDisplay");    //类似ajax的$函数 
        objSearchHelper.t1.style.backgroundColor = "#eeeeee";  //此处可以找到对象,可以使样式设置成功 
        objSearchHelper.v = G("hfValue"); 
        objSearchHelper.t2 = G("hfText"); 
        objSearchHelper.c = G("hfCode"); 
        objSearchHelper.runatserver = runatserver; 
        xmlhttp.onreadystatechange = function() { 
            if (xmlhttp.readystate == 4 && xmlhttp.status == 200) { 
            var result = xmlhttp.responseText; 
            if (result != "false") { 
                result = result.split(","); 
                objSearchHelper.t1.value = result[1]; 
                objSearchHelper.v.value = result[0]; 
                objSearchHelper.t2.value = result[1]; 
                objSearchHelper.c.value = result[2]; 
                objSearchHelper.t1.style.color = ""; 
                if (objSearchHelper.runserver) __doPostBack('', ''); 
            } else { 
                objSearchHelper.t1.style.color = "red";    //此处得到的对象不能设置样式? --- 此处应该可以了 
            } 
        }  
        } 
        xmlhttp.open("get", "test.aspx?type=" + type + "&s=" + input); 
        xmlhttp.send(); 
    } function G(id) { 
        var srcId = event.srcElement.id; 
        var prefix = srcId.substr(0, srcId.lastIndexOf("_") + 1); 
        return document.getElementById(prefix + id); 
    }
      

  7.   

    如果你要用全局变量1)  函数调用处 function() { GetResultFromServer(objSearchHelper) };  ...
        应该为 function() { GetResultFromServer() };  ...
    2)  函数定义处 function GetResultFromServer(objSearchHelper) {  ...
        应该为 function GetResultFromServer() {  ...