Я использую следующий JavaScript для динамического добавления строк в таблицу: -
var trObj = document.createElement('tr');
trObj.setAttribute('name', 'dynamicTR');
var tdObjEmpty = document.createElement('td');
tdObjEmpty.setAttribute('colspan', '2');
tdObjEmpty.innerHTML = ' '
trObj.appendChild ( tdObjEmpty );
var tdObj = document.createElement('td');
tdObj.setAttribute('colspan', '15');
tdObj.innerHTML = postingDivObj.innerHTML; // <-- copy the innerHTML
trObj.appendChild ( tdObj );
parentObj = approvedDisapprovedTableObj.getElementsByTagName('tbody')[0];
targetElementObj = getNthTr ( parentObj, rowIndex1 - extraTr ); // <-- it will just return the trObject,
if ( targetElementObj ){
parentObj.insertBefore(trObj, targetElementObj.nextSibling )
}else{
//alert ( 'targetElementObj is null' );
}
Это работает как в FF, так и в IE, [но, я думаю, в случае IE name и colspan атрибут не устанавливается с помощью setAttribute. но не уверен].
Теперь, когда мне нужно удалить все строки, которые создаются динамически, я использую: -
dynamicTRObjs = document.getElementsByName('dynamicTR');
if ( dynamicTRObjs ){
parentObj = approvedDisapprovedTableObj.getElementsByTagName('tbody')[0];
for ( i = 0 ; i < dynamicTRObjs.length; i++ ){
parentObj.removeChild ( dynamicTRObjs[i] );
extraTr++;
}
}
Этот код удаляет все динамически созданные TR. и он отлично работает в FF, но не в IE.
Также в случае IE dynamicTRObjs.length
всегда равно 0, тогда как в FF dynamicTRObjs.length
это дает правильное количество строк. Пожалуйста, скажите мне, что мне здесь не хватает.