下面的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);
}
答案 0 :(得分:3)
.all
通常不存在,只有document.all
,但它甚至不是标准的。 Internet Explorer具有一些自定义属性,但您不应该依赖它们。您可能需要.children
:
var NewField = NewTableRow.children;
或.cells
:
var NewField = NewTableRow.cells;