为什么这个javascript在IE中不起作用?

Rak*_*yal 0 html javascript dynamic

我使用以下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' );
    }
Run Code Online (Sandbox Code Playgroud)

这在FF和IE中都有效,[但是,我想,如果没有使用setAttribute设置IE 名称colspan属性.但不确定].

现在,当我必须删除动态创建的所有行时,我使用: -

dynamicTRObjs = document.getElementsByName('dynamicTR');
    if ( dynamicTRObjs ){
            parentObj = approvedDisapprovedTableObj.getElementsByTagName('tbody')[0];
            for ( i = 0 ; i < dynamicTRObjs.length; i++ ){              
                parentObj.removeChild ( dynamicTRObjs[i] );          
                extraTr++;
            } 
        }
Run Code Online (Sandbox Code Playgroud)

此代码删除所有动态创建的TR.它在FF中工作正常,但在IE中却没有.
同样在IE的情况下dynamicTRObjs.length总是0,而在FF中dynamicTRObjs.length它给出正确的行数.请告诉我这里缺少什么.

Mic*_*man 9

HTML4规范属性列表列出了可以设置name属性的元素.表和表元素不在列表中.最明显的选择之一是,

  • 保持对您创建的所有TR的引用,这样您就不必在DOM中找到它们
  • 在TR上设置className并使用选择器来查找它们

Firefox正确地使用了getElementsByName而IE不是其他人也遇到过的东西.我完全避免在这里使用名字.