问题:在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;
}
})
一个发现是 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;
}
})
LZ直接操作dom不就好了
没完全看懂这个代码,如果只是按LZ的描述,切换A标签的click事件,不如直接多来几个A好了,各自绑定不同的事件,需要哪个显示哪个,不需要的隐藏起来。这样一方面也不用来回换A里面的IMG。
LZ可以试着用Firebug跟踪一下代码,这类问题通常很容易找到答案的。或者把所有代码都贴出来,不然我们就看这一段靠人脑运行太费劲了