我正在使用javascript制作输入网格。这些输入中的每一个都具有唯一的名称和ID:" test1"," test2" ...我还可以根据其名称更改这些输入的样式。
var c = document.getElementById("gridOne");
function createTable() {
var table = document.createElement('table');
var rows = +document.getElementById('numRows').value;
var cols = +document.getElementById('numCols').value;
var n = 0;
for(var r=0; r<rows; r++) {
var tr = document.createElement('tr');
table.appendChild(tr);
for(var c=0; c<cols; c++) {
if(r == 0 || c == 0 || r == rows - 1 ||c == cols - 1 ){
var td = document.createElement('td');
tr.appendChild(td);
var inp = document.createElement('input');
inp.setAttribute('id', 'test'+n);
inp.setAttribute('name', 'test'+n);
inp.setAttribute('value', n);
inp.setAttribute('type','number');
td.appendChild(inp);
n++;
} else {
var tq = document.createElement('td');
tr.appendChild(tq);
tq.classList.add('inner');
var inp = document.createElement('input');
inp.setAttribute('type','text');
inp.disabled = true;
tq.appendChild(inp);
}
}
}
var container = document.getElementById('input_container');
container.innerHTML = '';
container.appendChild(table);
}
正在处理和输出JavaScript的HTML代码是
<form method="POST">
<div class="canvas" id="input_container">
<script type="text/javascript" src="js/Grid1.js"></script>
</div>
<input name="Confirm" type="submit">
当我尝试访问这些输入提交的值时,我收到了错误消息。我使用PHP,我已经尝试了GET和POST,但我没有运气。
if (isset($_POST['Confirm']))
{
$test0 = $_POST['test0'];
$test1 = $_POST['test1'];
$test2 = $_POST['test2'];
}
我的代码适用于除动态生成的输入表单之外的所有内容。
答案 0 :(得分:1)
您获得的错误实际上不是错误,而是通知。
未定义的索引:第y行的x中的test0
为避免您首先应检查这些值是否存在,即:
$test0 = isset($_POST['test0']) ? $_POST['test0'] : 'default value';
或使用PHP7 null coalescing operator:
$test0 = $_POST['test0'] ?? 'default value';
我认为处理动态生成字段的更好方法是使用数组。所以你应该:
[name]
的{{1}}属性因此,示例代码可能如下所示:
[]
和PHP:
<input type="number" name="test[]">
<input type="number" name="test[]">
<input type="number" name="test[]">