请教一个带参数的函数

edwardrong 2006-08-10 10:39:07
现在html代码片断如下

<td><inpute id="id1" value="" onBlur="sndReq(this.value,this.id);"></td>
<td><inpute id="id1" value="" ></td>
<td><inpute id="temp" style="hidden" value="" ></td>

我想在id1里面输入一个数字,经过echo.php连接数据库后找出数字对应的string,然后在id2上输出那段string.而id1和id2是有关联的,譬如id1是1,id2就是a1,id1是2,id2就是a2……

现在是把echo.php的内容放到一个id为temp的input里面,再复制temp的值到id2。

可是本来是想用参数id1传递到handleResponse函数里面,这样就可以在handleResponse函数里对id2(id2="a"+id1)的value进行赋值,但是handleResponse那个函数加了参数id1之后用不了,问题究竟在哪?怎样才能解决?或者有什么其他方法?

如今的javascript如下:
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}

var http = createRequestObject();

function sndReq(a,id1) {
var row = document.getElementById(id);
var ln = row.nextSibling;
var temp = document.getElementById("temp");

http.open('get', 'echo.php?a='+a);
http.onreadystatechange = handleResponse;
http.send(null);
document.getElementById("a"+id1).value = document.getElementById("temp").value;//注:"a"+id1 =id2
}
function handleResponse() { //想定义成function handleResponse(id),但不行
if(http.readyState == 4){
var response = http.responseText;
document.getElementById("temp").value =null;
document.getElementById("temp").value = response;
//如果能用function handleResponse(id),就能直接function handleResponse("a"+id) = response;,而不用搞得那么麻烦
}
}
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
edwardrong 2006-08-11
  • 打赏
  • 举报
回复
如果我想把id1的parentNode作为参数传递到handleResponse函数呢?又应该怎样?
fosjos 2006-08-11
  • 打赏
  • 举报
回复
<td><input id="123" value="" onBlur="sndReq(this.value,this.id);"></td>
<td><input id="a123" value="" ></td>
<td><input id="temp" style="hidden" value="" ></td>
<script>
function sndReq(a,id1) {
http.open('get', 'echo.php?a='+a);
http.onreadystatechange = null;//不知道可不可以释放
var id2 = "a"+id1;
http.onreadystatechange = new Function("handleResponse('"+id2+"')");
http.send(null);
}
function handleResponse(id2) {
if(http.readyState == 4){
var response = http.responseText;
document.getElementById("temp").value = null;
document.getElementById("temp").value = response;
document.getElementById(id2).value = response;
}
}
</script>
其余照旧,估计这样可以实现了,虽然不是很规范
如果不行,多用alert()看看,或把报错信息贴出来
edwardrong 2006-08-11
  • 打赏
  • 举报
回复
顶!
fosjos 2006-08-10
  • 打赏
  • 举报
回复
http.onreadystatechange = null;//不知道可不可以释放
http.onreadystatechange = new Function("handleResponse('a"+id+"')");

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧