0

以下代码适用于最新版本的 Firefox、Chrome、Safari 和 IE,但不适用于 Opera。当我使用 Opera 单击添加按钮时,似乎已将一个非常薄的空间添加到行中,但没有其他内容......有人可以帮忙吗?表格:

<form method="post" action="send.php">
<table id="table">
<tr><th>job</th><th>comment</th></tr>
<tr>
<td><textarea name = "job[]"></textarea></td>
<td><textarea name = "comment[]"></textarea></td>
<tr>
</table>
<input type ="button" value="add entry" onclick="add('table')"/>
<input type ="submit" id="submit" value="submit"/>

JavaScript:

var names = ['job[]', 'comment[]'];

function add(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;

for (var i=0; i<colCount; i++) {
    var newcell = row.insertCell(i);
    var newentry = document.createElement('textarea');
    newentry.type = "text";
    newcell.appendChild(newentry);
    }
}
4

3 回答 3

2

设置newentry.type给出

Uncaught exception: DOMException: NO_MODIFICATION_ALLOWED_ERR

textarea实际上,http://www.w3schools.com/tags/tag_textarea.asp没有 type 属性。如果您要使用,您将需要该类型input

如果您删除设置类型的行,则效果很好。

我还在您的代码中发现了另一个错误:您没有关闭第二行,而是打开了一个新行。

这是很好的代码:

<tr>
<td><textarea name = "job[]"></textarea></td>
<td><textarea name = "comment[]"></textarea></td>
</tr>

于 2012-04-19T11:05:40.140 回答
1

这一行:newentry.type = "text";导致 Opera: 中的异常Uncaught exception: DOMException: NO_MODIFICATION_ALLOWED_ERR。这条线无论如何都不做(至少在 Chrome 中),所以我想你可以删除它。

var newentry = document.createElement('textarea');
newentry.type = "text";
console.log(newentry.type);

-> textarea

于 2012-04-19T10:57:26.757 回答
0

使用原生 DOM 方法,例如.createElement创建所有浏览器都支持的 TR(row) 和 TD(cells)。

您的代码可能如下所示:

var names = ['job[]', 'comment[]'];

function add(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.getElementsByTagName("TR").length;
var row = document.createElement("TR")
var colCount = table.getElementsByTagName("TR")[0].childNodes.length;

for (var i=0; i<colCount; i++) {
    var newcell = document.createElement("TD");
    row.appendChild(newcell);
    var newentry = document.createElement('textarea');
    newentry.type = "text";
    newcell.appendChild(newentry);
    }
}
table.appendChild( row );
}

我没有测试上面的代码,但它会帮助你到达那里。

于 2012-04-19T10:16:45.403 回答