我的html中有多个表(具有相同的结构)。他们在标签中。我正在动态创建选项卡,我想将这些表数据发送到mysql数据库。所以我想用javascript获取这些数据。我使用for循环正确创建了 TableData1,TableData2 .... 数组。问题是我无法在此处增加 TableData ('TableData'+ i).shift(); 。我收到了一个错误。我想创建 TableData1.shift(),TableData2.shift().....
function myDataSendFunction(){
var i;
for(i = 1; i <= array_size; i++){
eval("var TableData"+i+"=[];");
$('#mytable'+i+ ' tr').each(function(row, tr){
('TableData'+i)[row]={
"colum1" : $(tr).find('td:eq(1)').text()
, "colum2" :$(tr).find('td:eq(2)').text()
, "colum3" : $(tr).find('td:eq(3)').text()
, "colum4" : $(tr).find('td:eq(4)').text()
, "colum5" : $(tr).find('td:eq(5)').text()
, "colum6" : $(tr).find('td:eq(6)').text()
, "colum7" : $(tr).find('td:eq(7)').text()
, "colum8" : $(tr).find('td:eq(8)').text()
}
});
('TableData'+i).shift();
}
}
我收到此错误。
Uncaught TypeError: ("TableData" + i).shift is not a function
at myDataSendFunction (<anonymous>:25:25)
at HTMLInputElement.onclick (create.php:1)
答案 0 :(得分:1)
function myDataSendFunction(){
var i,
TableData = [];
for(i = 1; i <= array_size; i++){
TableData[i] = [];
$('#mytable' + i + ' tr').each(function(row, tr){
TableData[i][row]={
"colum1" : $(tr).find('td:eq(1)').text()
, "colum2" : $(tr).find('td:eq(2)').text()
, "colum3" : $(tr).find('td:eq(3)').text()
, "colum4" : $(tr).find('td:eq(4)').text()
, "colum5" : $(tr).find('td:eq(5)').text()
, "colum6" : $(tr).find('td:eq(6)').text()
, "colum7" : $(tr).find('td:eq(7)').text()
, "colum8" : $(tr).find('td:eq(8)').text()
};
});
TableData[i].shift();
}
}
我该怎么办?我尝试使用TableData数组,然后问题发生在这里TableData [i] [row]中有Uncaught TypeError:无法设置属性&#39; 0&#39;未定义的
您的麻烦主要围绕尚未定义的变量设置属性。在尝试分配属性之前,您必须定义TableData
。
一旦TableData
被&#34;初始化&#34;到数组(var TableData = []
),您可以在TableData
上设置属性。但您无法立即在TableData
的属性上设置属性。例如,您无法直接跳转到TableData[i][row]
。您必须先将TableData[i]
设置为数组(TableData[i] = []
),,然后,您可以将TableData[i][row]
设置为某个值。
通过尝试用eval
来解决这个问题,你遇到了一个全新的问题世界。尽量避免eval
......这是一个非常复杂的野兽,往往会造成很多混乱和痛苦。
查看MDN's Working with objects文档可能会有所帮助,以便更好地了解JavaScript的数组和对象会发生什么。
答案 1 :(得分:0)
显然你的元素选择是你做的错误。通过硬编码array_size
而不使用for循环,您可以轻松地
找到我的sample implementation here。
请记住,当您计划使用数组时,请坚持使用数组,而不是在字符串和数组之间来回移动。它会导致你遇到的问题,比如你已经遇到的问题以及不必要的脏代码。