2014-02-16 2 views
0

моя проблема заключается в том, что при запуске кода в консоли показывает это: объекта не имеет метода «AppendChild»Как я могу решить объект не имеет метода «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

Можете ли вы поместить html и js в jsfiddle? –

+0

почему вы не используете insertCell вместо этого? – ponciste

ответ

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++) { 
Смежные вопросы