我如何解决对象没有方法'appendChild'

时间:2014-02-16 18:01:27

标签: javascript

我的问题是,当您在控制台中运行代码时显示:对象没有方法'appendChild'

这是我的代码:

    function createColumns() {

    var nodesTr = document.getElementsByTagName( 'tr' );

    for( var i in nodesTr ) {

        if( i < 3 || i == 8 || i == 13 || i == 15 || i == 18 )
            continue;

        for( var j = 1; j <= 14; j++ ) {

            var nodeHTML = document.createElement( 'td' );
            nodeHTML.innerHTML = 1;
            nodesTr[ i ].appendChild( nodeHTML );

        }   // end for

    }   // end for

} // end function createColumns

问题在于这一部分

nodesTr[ i ].appendChild( nodeHTML );

1 个答案:

答案 0 :(得分:4)

这是因为您使用的是for-in而不是for声明

这将命中非节点的属性:

for( var i in nodesTr ) {

您可以使用console.log()来记录您的值来验证这一点。

console.log(i, nodesTr[ i ]);

我相信它会触及.length属性,也许会触及.item()方法。


使用for语句只会迭代数字索引,并保证顺序是您在循环中定义的顺序。

for (var i = 0; i < nodesTr.length; i++) {