我有一个加载并返回JSON项的网格。添加了一个单选按钮过滤器来过滤这些项目。每次选择单选按钮时,网格项都将刷新以显示符合过滤条件的项目。
那就是,当我点击单选按钮时,没有任何反应,我看到Cannot read property '0' of undefined
错误。 JSON正确加载,没有任何404或500错误,我可以使用Chrome DevTools确认。违规行代码似乎是while (typeof n.main[l.toString()] != "undefined")
。下面是包含所述代码的函数:
function j(n) {
var m = [],
l;
if (n.main != "undefined") {
l = 0;
while (typeof n.main[l.toString()] != "undefined") {
m.push(n.main[l.toString()]);
l++
}
}
if (GridApp.logging) {
$.log(m.length + " talks loaded")
}
m = f(m);
m = GridMathFactory.applyGridMath(m);
GridModel.setTalkVOs(m);
d = e(d);
for (l = 0; l < d.length; l++) {
d[l].talkIdx = l
}
GridController.onTalksLoadSuccess()
}
以下是函数n
的代码:
function n() {
if (GridApp.logging) {
$.log("GridMathFactory.calculateSubColumns()")
}
var B = 0;
var A;
for (var z = 0; z < q.length; z++) {
var y = columnScale - 1;
if (t[y] < f.length) {
A = g(q[z], B)
}
B += (A) ? k : k;
if (GridApp.logging) {
$.log("Just calculated column " + z + "; Contained 1 ? " + A)
}
}
}
答案 0 :(得分:4)
if (n.main != "undefined") {
应该是:
if (n.main !== undefined) {
或:
if (typeof n.main != "undefined") {
答案 1 :(得分:1)
结果main
是我正在调用的JSON中不存在的东西。删除它,现在它可以正常工作。
function j(n) {
var m = [],
l;
if (n != "undefined") {
l = 0;
while (typeof n[l.toString()] != "undefined") {
m.push(n[l.toString()]);
l++
}
}
if (GridApp.logging) {
$.log(m.length + " talks loaded")
}
m = f(m);
m = GridMathFactory.applyGridMath(m);
GridModel.setTalkVOs(m);
d = e(d);
for (l = 0; l < d.length; l++) {
d[l].talkIdx = l
}
GridController.onTalksLoadSuccess()
}