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

実はhttp://www.w3schools.com/tags/tag_textarea.asptextareaのtype 属性はありません。を使用する場合は、タイプが必要になります。input

タイプを設定する行を削除すると、うまく機能します。

また、コードに別のエラーが見つかりました。2 番目の行を閉じずに、新しい行を開きます。

これは良いコードです:

<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

.createElementすべてのブラウザでサポートされているTR(行)およびTD(セル)を作成するなどのネイティブDOMメソッドを使用します。

コードは次のようになります。

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 に答える