getElementById 返回空、getElementById 参数为变量失败


最近在做一个报表的时候使用了ajax技术,将用户在页面操作之后,异步的结果利用js在特定的位置显示,

比如xmlHttp.responseText返回的结果是  "123456,操作成功", 那么我直接在用户id 123456下方的一个span标签里面显示操作结果 "  操作成功" 
那么首先就需要得到标签id,再利用innerText就可以了

<span class="STYLE3" name = "alertuser" id="alert123456" color =red></span>

我的页面更新js函数
 	function updatePage()
	{
		if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
		{
		var response = xmlHttp.responseText;
		var uid=response.split(',');    //这时候uid[0]就是123456(如果response 为 123456,操作成功 )uid[1]是”操作成功“
 		var which= 'alert'+uid[0]; //
                alert(which);
		$(which).innerText = uid[1];
		}
	}


response 的内容是"123456,操作成功"
按所想which的提示对话框弹出的内容就是alert123456
 
可是在浏览器里里面就是提示

谷歌:Uncaught TypeError: Cannot set property 'innerText' of null
IE: 对象为NULL

于是google 百度 关键字 “ID存在 getElementById 为空" 还是没有找到我想要的答案

再去尝试 如果修改成下面这种方式 就可以,但是不能再特定用户位置显示。

 		var which= 'alert123456';
                alert(which);


上面的方式能够成功得到对象 并且innerText 也成功,说明在responseText返回之后解析的用户id的时候uid[0]有问题
那么可以看一下which变量的长度

		var uid=response.split(',');
 		var which= 'alert'+uid[0];
                alert(which);
                alert(which.length);


虽然弹出的对话框显示的是‘alert123456’,但是弹出的长度却是12,说明变量which里面含有未知字符
通过用正则表达式

which=which.replace(/[^a-z0-9]/gi,'');

去除之后就可以正常在网页特定位置显示内容了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章