回调函数为什么获取不到对象? document.getElementById(objSearchHelper.t1.id)这样也取不到我将参数改成从页面源文件查找出的id传进去也获取不到对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢楼上的有知道的朋友么?在回调函数里可以设置document.title及window.status的值 如果在回调用函数中跟踪调试:alert(objSearchHelper.t1.id)弹出的值,是正确的。但用alert(objSearchHelper.t1 == document.getElementById(objSearchHelper.t1.id)) 返回的值为flase xmlhttp.onreadystatechange = function() { GetResultFromServer(objSearchHelper) }; onreadystatechange的方法是在其他地方调用的,在那个地方还没有定义呢最简单的方法就是把objSearchHelper定义成全局变量。 定义为全局变量也不能改变样式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"; } }} 抱歉,代码如下:在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(); } } 呵呵,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); } 如果你要用全局变量1) 函数调用处 function() { GetResultFromServer(objSearchHelper) }; ... 应该为 function() { GetResultFromServer() }; ...2) 函数定义处 function GetResultFromServer(objSearchHelper) { ... 应该为 function GetResultFromServer() { ... 求教如何解除JS脚本对文件的占用? flexigrid 如何添加“序号”,如果添加一个自定义列,列里面包括“删除”、“编辑” 的超链接。 弱问:js为啥取不到值呢? WEB单浏览框多选文件有好用的插件么 javascript如何制作“删除”时有个提示 动态更新<table>的height问题 如何写通过js脚本如何取得用户从哪点击到本网站页面。 有什么好的 javascript入门书籍? 请问JS中怎样设置一个表格的某行隐藏不显示 用js 在span指定的位置放入一串字符,如何实现? getElementsByName的问题 一个创建元素的问题!
在回调函数里可以设置document.title及window.status的值
alert(objSearchHelper.t1.id)弹出的值,是正确的。但用alert(objSearchHelper.t1 == document.getElementById(objSearchHelper.t1.id)) 返回的值为flase
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";
}
}
}
在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();
}
}
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);
}
应该为 function() { GetResultFromServer() }; ...
2) 函数定义处 function GetResultFromServer(objSearchHelper) { ...
应该为 function GetResultFromServer() { ...