【发布时间】:2017-03-21 12:46:20
【问题描述】:
我的 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)
【问题讨论】:
-
'TableData'+i是一个字符串,而不是一个数组。也请不要使用eval()。 -
您遗漏了
eval,从某个角度来看,这根本不是一件坏事。最好让TableData本身成为一个数组,因为这样你就不必求助于eval()的那种令人不快且会破坏性能的用法。 -
这表明您应该重新考虑您的代码
eval("var TableData"+i+"=[];");不要将eval()用于这样简单的事情。 -
对不起,这是我的第一个 Web 开发。我想根据我在 html 中创建的表创建 TableData1、TableData2、TableData3 的数组。表数是一个变体。那么我如何在不使用 eval 的情况下创建 TableData1[],TableData2[].....?然后我需要删除这些表的第一行。这就是我使用 shift 的原因。
-
将
TableData设为数组。 然后您可以使用TableData[0]、TableData[1]等,然后您可以实际使用TableData.shift();。您根本无法使用普通变量来做到这一点(好吧,不是以任何不可怕的方式)。
标签: javascript jquery shift