TypeError: jsonObj[index] is undefined var jsonObj=${json};改成 var jsonObj=eval(json) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var index=i*cellCount+j;如果这里计算出来定的索引值大于数组的最大索引值就会出现这个问题。这个地方你需要重新写公式计算 你第二个循环是为了拼出td的html如果知道json的格式的话不需要循环直接jsonObj[i].personId取值 这个${json}是el表达式,不是jquery 现在情况是jsonObj[i].personId能取到值,但是console确报jsonObj[i]未定义,包括我用jsonObj[0]都报未定义错误 eval用这个再转一次。用var jsonObj=${json};var obj = eval ("(" + jsonObj + ")");转了也不好用哦,报错SyntaxError: missing ] after element list([object Object],[object Object],[object Object],[object Object],[obj 用var jsonObj=${json};var obj = eval (jsonObj);这样 因为你的字符串已经有[]了 你这个var jsonObj=${json};用法有问题吧,如楼上说的用eval$(function () { //绘制表格 var json = '[{ "id": null, "personId": 10250, "permissionTypeId": 5, "permissionValue": 0 }, { "id": null, "personId": 10250, "permissionTypeId": 6, "permissionValue": 1}]'; var jsonObj=eval(json); var count = jsonObj.length; var rowCount = Math.ceil(count / 4); var cellCount = 4; var table = $("<table cellpadding=\"0\" cellspaceing=\"0\" style=\"margin-left:20px;\" width=\"750\">"); table.appendTo($("#createtable")); for (var i = 0; i < count; i++) { var tr = $("<tr></tr>"); tr.appendTo(table); // for(var j=0;j<cellCount;j++) // { // var index=i*cellCount+j; var td = $("<td><input type='checkbox' value='" + jsonObj[i].permissionValue + "' id='" + jsonObj[i].permissionTypeId + "'/><label>" + jsonObj[i].permissionValue + "</label></td>"); td.appendTo(tr); tr.appendTo(table); // } } $("#createtable").append("</table>"); //初始化权限值 $("input[type='checkbox']").each(function () { var permission = $(this).attr("value"); if (permission == 1) { console.log($(this).attr("checked")); $(this).attr("checked", "checked"); } }); }); <script language="javascript">var s=eval([{"id":null,"personId":10250,"permissionTypeId":5,"permissionValue":0},{"id":null,"personId":10250,"permissionTypeId":6,"permissionValue":1}]);alert(s.length);alert(s[0]["personId"]);</script>我在我这测试都没问题 iframe参数传递问题 table 中定义数组怎么赋值???高手指教。。。。 如何是用JS 获取:<head></head>里面所有的东西 JS后台打印(难点是如何是还提示打印) form表单提交之后,打开一新小窗口问题 趁夜深人静扔淀粉 asp.net 用了jquery-easyui后不能引发服务器事件了 客户端如何做HTML的EnCode编码?? 求教高手!如何在刷新页面的同时不改变页面中的变量值? 如何在javascript中执行onunload事件? setInterval多层嵌套,同时停止的问题 这个问题得高手才能解决。。。
如果这里计算出来定的索引值大于数组的最大索引值就会出现这个问题。
这个地方你需要重新写公式计算
如果知道json的格式的话不需要循环直接jsonObj[i].personId取值
eval用这个再转一次。
用var jsonObj=${json};
var obj = eval ("(" + jsonObj + ")");
转了也不好用哦,报错
SyntaxError: missing ] after element list
([object Object],[object Object],[object Object],[object Object],[obj
var obj = eval (jsonObj);
这样 因为你的字符串已经有[]了
//绘制表格
var json = '[{ "id": null, "personId": 10250, "permissionTypeId": 5, "permissionValue": 0 }, { "id": null, "personId": 10250, "permissionTypeId": 6, "permissionValue": 1}]';
var jsonObj=eval(json);
var count = jsonObj.length;
var rowCount = Math.ceil(count / 4);
var cellCount = 4;
var table = $("<table cellpadding=\"0\" cellspaceing=\"0\" style=\"margin-left:20px;\" width=\"750\">");
table.appendTo($("#createtable"));
for (var i = 0; i < count; i++) {
var tr = $("<tr></tr>");
tr.appendTo(table);
// for(var j=0;j<cellCount;j++)
// {
// var index=i*cellCount+j;
var td = $("<td><input type='checkbox' value='" + jsonObj[i].permissionValue + "' id='" + jsonObj[i].permissionTypeId
+ "'/><label>" + jsonObj[i].permissionValue + "</label></td>");
td.appendTo(tr);
tr.appendTo(table);
// }
}
$("#createtable").append("</table>"); //初始化权限值
$("input[type='checkbox']").each(function () {
var permission = $(this).attr("value");
if (permission == 1) {
console.log($(this).attr("checked"));
$(this).attr("checked", "checked");
}
});
});
var s=eval([{"id":null,"personId":10250,"permissionTypeId":5,"permissionValue":0},{"id":null,"personId":10250,"permissionTypeId":6,"permissionValue":1}]);
alert(s.length);
alert(s[0]["personId"]);
</script>我在我这测试都没问题