Javascript cloneNode проблема в FireFox
Приведенный ниже JavaScript прекрасно работает в Internet Explorer, но не работает в FireFox.
Он зацикливается на "NewField is undefined", который будет строкой:
for (var i=0;i<NewField.length;i++)
Это цикл, который будет переименовывать поля формы в этой строке таблицы.
Здесь вы можете увидеть всю страницу http://www.sorenwinslow.com/CloneRowTest.asp
function CloneRows(TableRowId)
{
var NumRows = document.forms["TestForm"].NumRows.value;
NumRows++;
document.forms["TestForm"].NumRows.value = NumRows;
var RowToClone = document.getElementById(TableRowId);
var NewTableRow = RowToClone.cloneNode(true);
NewTableRow.id = TableRowId + NumRows ;
NewTableRow.style.display = "table-row";
var NewField = NewTableRow.all;
for (var i=0;i<NewField.length;i++)
{
var theName = NewField[i].name;
if (theName)
{
NewField[i].name = theName + NumRows;
}
}
var insertHere = document.getElementById(TableRowId);
insertHere.parentNode.insertBefore(NewTableRow,insertHere);
}
1 ответ
Решение
.all
вообще не существует, только document.all
, но это даже не стандарт. Internet Explorer имеет некоторые пользовательские свойства, но вы не должны полагаться на них. Вы, вероятно, хотите .children
:
var NewField = NewTableRow.children;
или же .cells
:
var NewField = NewTableRow.cells;