javascript - 无法读取未定义的属性 'undefined',但我确定 var 是有效的

标签 javascript arrays node.js object

我正在解析 smil (xml) 文件以获取路径名列表。解析进展顺利,并且存储在一个巨大的文字对象中。

但是当我尝试取回信息时,我只得到:

/home/pi/RaspberryPiTV-master/app.js:158
        Playlist.push(smil.playlist.video[i].src);
                                         ^
TypeError: Cannot read property 'undefined' of undefined
at /home/pi/RaspberryPiTV-master/app.js:158:46
at /home/pi/RaspberryPiTV-master/app.js:321:39
at Object.oncomplete (fs.js:93:15)

代码如下:

var smil={}, i=0;
Playlist=[];
parse("/home/pi/test.smil", function (parsed){
    smil=parsed;
    console.dir(util.inspect(smil, false, null));
    do
    {
        Playlist.push(smil.playlist.video[i].src);
        i=i+1;
    }while(i<smil.playlist.video.length-1);
    ...
}

函数解析(路径名,回调)相当大,但确实有效,因为它的打印确实有效:

{
  stream:
    [
      { name: 'Stream1' }
    ],
  playlist:
    [
      { video:
        [
          { src: 'L.mp4', start: '5', length: '5' },
          { src: 'SW.mp4', start: '50', length: '5' },
          { src: 'HN.mp4', start: '150', length: '5' }
        ],
        name: 'pl1',
        playOnStream: 'Stream1',
        repeat: 'true',
        scheduled: '2013-07-23 11:00:00'
      }
    ]
}

我错过了什么吗?我只是不明白为什么我得到了未定义,因为我确实得到了正确的打印。

最佳答案

播放列表是一个数组。

替换

smil.playlist.video[i].src

var index = 0; // or whatever
smil.playlist[index].video[i].src

关于javascript - 无法读取未定义的属性 'undefined',但我确定 var 是有效的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885766/

相关文章:

javascript - 如何在Firebase中访问不同 Node 的onUpdate事件?

javascript - 无法在 vue-select 上触发事件

javascript - 如何记录返回自身的函数被调用的次数?

php - array_merge 更改键

java - 更改添加到堆栈的变量的值而不更改堆栈?

arrays - 在 MATLAB 中为数组提供与另一个数组相同的排序

javascript - 有没有办法在联合类型上调用数组原型(prototype)方法?

javascript - 将监听器添加到 firebase 生成的 key 内的子级?

javascript - 从没有 API 的网站获取数据/创建 API

node.js - npm 安装后 npm 启动失败