ユーザーが選択した行を追加および削除できる単純なフォームを作成しました。ユーザーが追加する行数を決定し、それに応じてフォームにデータを入力した後、送信後にデータを投稿して、.php スクリプトを使用してデータをサーバーにアップロードできるようにします。
行の追加と削除の機能をテストしました。送信ボタンをクリックすると、upload.php にリダイレクトされますが、そのページに「未定義のインデックス: 報酬」というエラーが表示され、データが適切に送信されていないと思われます。
以下の実装に問題はありますか?
HTML
<button onclick="addRow();">Add Row</button>
<form method="post" action="upload.php">
<table border="1" id="optionsTable">
<tr>
<td>Header1</td>
<td>Header2</td>
<td>Delete</td>
</tr>
<tr id="templateRow" style="display:none">
<td><input type="text" id="reward" /></td>
<td><input type="text" id="duration" /></td>
<td><input type="button" id="deleteOption" value="Delete" onclick="delRow(this)"/></td>
</tr>
</table>
<input type="submit" value="Submit" />
</form>
</body>
</html>
<script>
var maxID = 0;
function getTemplateRow() {
var x = document.getElementById("templateRow").cloneNode(true);
x.id = "";
x.style.display = "";
x.innerHTML = x.innerHTML.replace(/{id}/, ++maxID);
return x;
}
function addRow() {
var t = document.getElementById("optionsTable");
var rows = t.getElementsByTagName("tr");
var r = rows[rows.length - 1];
r.parentNode.insertBefore(getTemplateRow(), r);
}
function delRow(row) {
var i=row.parentNode.parentNode.rowIndex;
document.getElementById('optionsTable').deleteRow(i);
}
</script>
私は今、upload.php でデバッグしているだけなので、コマンドは 1 つしかありません: echo($_POST['reward']);
どんな助けでも大歓迎です。