Javascript 对象属性可访问,但给出未定义的错误

标签 javascript

我正在尝试使用以下代码处理从服务器发送的数据,其中 msg 是保存两个数组的传入数据:

console.log(msg);
for (var i = 0; i <= msg.cues.length; i++) {
  $("#cues").append("<div class=\"cue-item\" cueval=\"cue-" + i + "\"><h4>"+msg.cues[i].name+"</h4>"+msg.cues[i].description+"</div>");
}

这段代码将所需的元素添加到页面中,从浏览器窗口来看一切似乎都很好,但在控制台中我收到以下错误,该错误阻止所有其他代码运行:

{…}
  channels: Array [ 0, 0, 0, … ]
  cues: […]
    0: Object { name: "Cue 1", description: "This is a test cue" }

类型错误:msg.cues[i] 未定义

知道为什么会发生这种情况以及如何解决这个问题吗?

最佳答案

您正在迭代超过数组长度的一个位置。改变

for (var i = 0; i <= msg.cues.length; i++)

for (var i = 0; i < msg.cues.length; i++)

关于Javascript 对象属性可访问,但给出未定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47861462/

相关文章:

当我在 Opera 中调用 FB.Canvas.setSize 时,javascript FB 对象未准备好

javascript - 将不透明度更改为特定值

javascript - 创建一个 RXJS 中断定时器

javascript - 使用 React Native 和 Redux 的动画状态管理

Javascript 正则表达式替换换行符

javascript - cy.click() 只能在单个元素上调用

javascript - 如何检查电子邮件地址是否包含 @ 符号和 '.' 。在 html 和 javascript 中

javascript - 如何突出显示按键事件后的文本?

javascript - 使用 sequelize 中的 where 条件根据距离进行过滤

javascript - Polymer 的动画页面与 Angularjs 一起使用