javascript创建页面元素事件丢失原委

    在通过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 += "&nbsp;&nbsp;"; // 特别注意这行代码                  

        objServerList.appendChild(objSpan);                

        if ((i + 1) == g_nNum){break;}             

    }        

}     

Function SelectSpan(){……}

    说明:通过循环创建多个span标签,然后为其设置属性和事件onclick,如果你按照上面的方法进行创建,你会发现一个很奇怪的现象,那就是你创建出来的N个span标签,其中只有最后一个才能响应咱们赋予的事件SelectSpan!   

    原来,是因为上面用粗体标注的代码引发的问题!因为在咱们将创建好的span标签填入objServerList容器前,其中的所有内容已经被"&nbsp;&nbsp;"同化为普通的内容了,于是,咱们赋予的事件也已经消失了,但是,貌似只有事件被“过滤”掉了,具体的原因可能还要今后有进一步了解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值