在IE7中使用appendchild的问题

时间:2010-04-13 13:53:37

标签: internet-explorer-7 javascript appendchild

在下面找到我用来添加新日期字段的js函数& '选择地点'链接到id为'coursedates'的现有div。问题是这在FF 3& IE 8.
它在IE7中不起作用。如果我提醒'dts'的计数(长度),它总是显示1,尽管IE开发人员工具栏显示新的日期div被添加到coursedates。 我尝试使用innerHtml而不是appendchild,但在这种情况下,旧的coursedt div的元素如selven + new_course_dt_index的听众都会丢失。 是否有解决方案。

提前致谢。

addnewcoursedate: function () {

var dts = yud.getElementsByClassName('coursedt', 'div', 'coursedates');
var new_course_dt_index = parseInt(dts[parseInt(dts.length, 10)-1].id.split('coursedt')[1],10)+1;
var newdt = document.createElement('div');
newdt.setAttribute('class','coursedt');
newdt.setAttribute('id','coursedt'+new_course_dt_index);

var coursedt_htm = 
"<div class='clearfix flt_left'><label for='coursestartdt"+new_course_dt_index+"'>Start Date & Time </label><a href='javascript:NewCssCal(\"coursestartdt"+new_course_dt_index+"\",\"ddmmyyyy\",\"arrow\",true,12,false);'><img src='calbtn.gif' width='16' height='16' border='0' alt='Pick a start date & time'></a><br/>"+
    "<input type='text' id='coursestartdt"+new_course_dt_index+"' name='coursestartdt"+new_course_dt_index+"' value=''> </div>"+
    "<div class='flt_left'><a href='#' class='selven' id='selven"+new_course_dt_index+"'>Select Venues</a><br/><input type='hidden' name='venues"+new_course_dt_index+"' id='venues"+new_course_dt_index+"'><div class='selvenue' id='venueshw"+new_course_dt_index+"'>&nbsp;</div></div>"+
    "<div class='flt_rght clr_lft'><a href='javascript:YAHOO.modname.event_js.removecoursedate(\""+new_course_dt_index+"\");'><img title=\"Remove date\" src=\"clear_field.gif\" /></a></div>";
newdt.innerHTML = coursedt_htm;

var crsdts = yud.get('coursedates');
crsdts.appendChild(newdt);

var newbr = document.createElement('br');
newbr.setAttribute('class','lstclr');
newbr.setAttribute('id','lstclr'+new_course_dt_index);

crsdts.appendChild(newbr);

if ( YAHOO.modname.event_js.ven_dlgs[new_course_dt_index] == null ) {
    YAHOO.modname.event_js.ven_dlgs[new_course_dt_index] = _createVenueDialog(new_course_dt_index);
}

},

注意:yud:YAHOO.util.Dom

2 个答案:

答案 0 :(得分:2)

发现问题。 出于某种原因,IE7没有认识到新的div中添加了“coursedt”这个类。

newdt.setAttribute( '类', 'coursedt')

但是当我将代码更改为以下代码时,它就起作用了:

var attr = document.createAttribute('class');  attr.value ='coursedt';  newdt.setAttributeNode(ATTR);

适用于FF&amp; IE 6,7,8。

答案 1 :(得分:0)

我还发现当一个窗口上的函数试图在另一个窗口中的元素上调用appendChild时会发生这个问题,这意味着两个元素必须在同一个文档上(这是非常明显的),但至少IE应该说些什么。