function create(param) {
var i, target = document.getElementById('results');
target.innerHTML = '';
for(i = 1; i <= param; i += 1) {
target.innerHTML +='<br>'
for(var j=1;j<=param;j+=1)
target.innerHTML += '<input type="text" id="a'+i+''+j+'" placeholder="a'+i+''+j+'">';
}
}
function saveData(param) {
var a = []
for(var i = 1;i<param;i+=1) {
a[i] = [];
for(var j = 1;j<param;j+=1)
a[i][j] = document.getElementById('"a'+i+''+j+'"').value;
}
var target = document.getElementById('ShowResults');
for(var i = 1;i<param;i+=1){
a[i] = [];
target.innerHTML +='<br>'
for(var j = 1;j<param;j+=1)
target.innerHTML +=a[i][j];
}
}
&#13;
<button onclick="create(5)" style="widht:300px;height:30px;">Create table</button>
<div id="results"> </div>
<button id="takeResults" onclick="saveData(5)"style="widht:300px;height:30px;">Save data</button>
<div id="ShowResults"> </div>
&#13;
好吧所以我制作了一个表格,并给出了 "a'+i+''+j+'"
的每个文本框ID,但似乎当我想保存它显示的数据时,我发现以下错误:无法读取属性&#39 ;值&#39;为null
你能告诉我我做错了什么吗?
答案 0 :(得分:0)
改变这个......
a[i][j] = document.getElementById('"a'+i+''+j+'"').value;
到此......
a[i][j] = document.getElementById('a' + i + j).value;
您在创建ID时会在ID周围添加两个引号,但是当您使用getElementById
时,不需要同时添加它们。只需构建字符串即可。
您的代码还存在其他一些问题,主要是您没有开口括号,但是您有大括号。复制/粘贴此内容,它应该可以解决您的问题......
function create(param) {
var i, target = document.getElementById('results');
target.innerHTML = '';
for(i = 1; i <= param; i += 1) {
target.innerHTML +='<br>'
for(var j=1;j<=param;j+=1) {
target.innerHTML += '<input type="text" id="a'+i+''+j+'" placeholder="a'+i+''+j+'">';
}
}
function saveData(param) {
var a = []
for(var i = 1;i<param;i+=1) {
a[i] = [];
for(var j = 1;j<param;j+=1) {
a[i][j] = document.getElementById('a' + i + j).value;
}
var target = document.getElementById('ShowResults');
for(var i = 1;i<param;i+=1) {
a[i] = [];
target.innerHTML +='<br>'
for(var j = 1;j<param;j+=1) {
target.innerHTML +=a[i][j];
}
}
}
}
顺便说一句,使用多层数组可能会导致问题,主要是因为对读者(或将来)不友好。我强烈建议您使用一组对象,并将事件命名为a
,i
&amp; j
。
答案 1 :(得分:0)
这里是一些代码改进的解决方案
正如我在评论中所说,您getElementById('"a' + i + '' + j + '"')
应该是getElementById('a' + i + '' + j)
的代码中存在错误
并且有很多不必要的循环
function create(param) {
var target = document.getElementById('results');
target.innerHTML = '';
for (var i = 0; i < param; i++) {
target.innerHTML += '<br>'
for (var j = 0; j < param; j++)
target.innerHTML += '<input type="text" id="a' + i + '' + j + '" placeholder="a' + i + '' + j + '">';
}
}
function saveData(param) {
var target = document.getElementById('ShowResults');
target.innerHTML = '';
var a = []
for (var i = 0; i < param; i++) {
a[i] = [];
for (var j = 0; j < param; j++) {
target.innerHTML += document.getElementById('a' + i + '' + j).value;
}
target.innerHTML += '<br>'
}
}
&#13;
<button onclick="create(5)" style="widht:300px;height:30px;">Create table</button>
<div id="results"> </div>
<button id="takeResults" onclick="saveData(5)" style="widht:300px;height:30px;">Save data</button>
<div id="ShowResults"> </div>
&#13;