问题:在ie6下 切换不同a标签的click事件 需要加载的dom会在第2次时(测试了innerHTML)消失
一个发现是 ie6不能用innerHTML=“字符串”来加载dom  但是不用字符串 怎么也不行啊
问题代码:
//建立dom
var str = '\
<dl class="MemberManagement_Div_Dl">\
                     <dt class="MemberManagement_Div_Dl_Dt">\
                     <a target="_blank" href="#">\
                     <img class="imageHead" alt="{name}" src="{image}"/>\
</a>\
                     </dt>\
<dd  class="MemberManagement_Div_Dl_Dd">\
<a href="#">{name}</a>\
</dd>\
<dd class="MemberManagement_Div_Dl_Dd">\
<input type="checkbox" class="MemberManagement_Div_Dl_Dd_checkbox" value="{sysId}" name="ids[]"/>选定\
</dd>\
                     </dl>';
//隐藏dd后的html字符串
var strHiddenDd='\
<dl class="MemberManagement_Div_Dl">\
                     <dt class="MemberManagement_Div_Dl_Dt">\
                     <a target="_blank" href="#">\
                     <img class="imageHead" alt="{name}" src="{image}"/>\
</a>\
                     </dt>\
<dd  class="MemberManagement_Div_Dl_Dd">\
<a href="#">{name}</a>\
</dd>\
<dd class="MemberManagement_Div_Dl_Dd">\
</dd>\
                     </dl>';
$each(data, function(x){

var strNow;
if(!optionObj[x.type]) strNow=strHiddenDd;else strNow=str;
if (!eval("memberManageFn.div_type" + x.type)){
eval("memberManageFn.div_type" + x.type+"= new Element('div')");

//兼容ie6
var strEnd=strNow.substitute(x);
//if(!document.all){
// eval("memberManageFn.div_type" + x.type).innerHTML = strEnd;
//}else{
var div=new Element('div',{
html: strEnd
})
eval("memberManageFn.div_type" + x.type).adopt(div.getChildren())
//}

//eval("memberManageFn.div_type" + x.type).innerHTML = strNow.substitute(x);
}
else {
var div = new Element('div',{
html:strNow.substitute(x)
});
//div.innerHTML =strNow.substitute(x);
eval("memberManageFn.div_type" + x.type).adopt(div.getChildren())
delete div;
}

})

解决方案 »

  1.   

    不是LZ写的是啥
    LZ直接操作dom不就好了
      

  2.   

    同意,把HTML大量放进JS里面,以后维护起来会让你心痛的。不过LZ大概是觉得处理{}里的内容方便一点吧。
    没完全看懂这个代码,如果只是按LZ的描述,切换A标签的click事件,不如直接多来几个A好了,各自绑定不同的事件,需要哪个显示哪个,不需要的隐藏起来。这样一方面也不用来回换A里面的IMG。
    LZ可以试着用Firebug跟踪一下代码,这类问题通常很容易找到答案的。或者把所有代码都贴出来,不然我们就看这一段靠人脑运行太费劲了