在通过javascript来进行页面元素的创建和组合的时候,可能会出现一些莫名其妙的问题,例如下面的代码:
var g_strServerName = "中国科学院,中国社会科学院,中国社会科学院台湾研究中心";
function Init(){
var arrServerName = g_strServerName.split(",");
var objServerList = document.all("ServerList");
for (var i = 0; i < arrServerName.length; i++){
var objSpan = document.createElement("SPAN");
objSpan.id = "Server_" + i;
objSpan.className = "normal";
objSpan.onclick = SelectSpan;
objSpan.innerHTML = arrServerName[i];
objServerList.innerHTML += " "; // 特别注意这行代码
objServerList.appendChild(objSpan);
if ((i + 1) == g_nNum){break;}
}
}
Function SelectSpan(){……}
说明:通过循环创建多个span标签,然后为其设置属性和事件onclick,如果你按照上面的方法进行创建,你会发现一个很奇怪的现象,那就是你创建出来的N个span标签,其中只有最后一个才能响应咱们赋予的事件SelectSpan!
原来,是因为上面用粗体标注的代码引发的问题!因为在咱们将创建好的span标签填入objServerList容器前,其中的所有内容已经被" "同化为普通的内容了,于是,咱们赋予的事件也已经消失了,但是,貌似只有事件被“过滤”掉了,具体的原因可能还要今后有进一步了解!