我有这个代码,当我点击一个按钮时会创建一个表。您在下面看到的代码非常完美,当我单击我的按钮时,表格将在目标div中创建。但问题是,当我在for循环中将dataArray
的索引从0
替换为i
时,该表未显示,我在Google Chrome的控制台中收到此错误
未捕获的TypeError:无法读取未定义的属性“Device_Name”
$(document).ready(function()
{
$(".button").click(function()
{
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = {'action': clickBtnValue};
$.post(ajaxurl, data, function (response)
{
dataArray = $.parseJSON(response);
var tbody = '';
var theader = '<table><tr><td>#</td><td>Name</td><td>Id</td></tr>\n';
for(i = 0; i <= dataArray.length; i++)
{
tbody += '<tr>';
tbody += '<td>' + (i + 1) + '</td>';
tbody += '<td>' + dataArray[0].Device_Name + '</td>';
tbody += '<td>' + dataArray[0].Device_Id + '</td>';
tbody += '</tr>\n';
}
var tfooter = '</table>';
document.getElementById('dataTable').innerHTML = theader + tbody + tfooter;
});
});
});
我不能将变量i
用作我的数组的索引吗?
答案 0 :(得分:3)
这个问题是因为你做了太多的循环。数组为0索引,因此您希望循环到长度 - 1。
这将允许您使用i
来访问数组:
for(var i = 0; i < dataArray.length; i++)
{
tbody += '<tr>';
tbody += '<td>' + (i+1) + '</td>';
tbody += '<td>' + dataArray[i].Device_Name + '</td>';
tbody += '<td>' + dataArray[i].Device_Id + '</td>';
tbody += '</tr>\n';
}
答案 1 :(得分:2)
当遍历零索引数组时,您需要使用小于(&lt;),不小于或等于(&lt; =)。数组中的最后一个元素将是index:length - 1。
更改:
for(i=0; i<=dataArray.length; i++)
要:
for(i=0; i<dataArray.length; i++)
应该工作。
答案 2 :(得分:2)
您可以使用每个方法循环遍历json对象,即:
$.each(dataArray, function (index, element){
alert( element.Device_Name );
});
更新..