Проблемы с пониманием и созданием динамических объектов JavaScript - PullRequest
0 голосов
/ 10 октября 2010

Я надеюсь, что мой код может объяснить сам себя, я почти на месте, я просто застрял на пути, как объединить необязательные данные в объект JSON с несколькими уровнями (это даже то, что это?)

Моя цель в следующем формате: http://flowplayer.org/plugins/javascript/playlist.html в разделе JavaScript-кодирование.

Ответы [ 2 ]

1 голос
/ 10 октября 2010
  1. не использовать for-in для массивов
  2. используйте push метод для добавления новых элементов в массив (используемый вами формат существует только в PHP)

Код:

// assuming you have video declared before
var video = { ... };

//get video list - example: video1.flv;test23.flv;Grabledable.flv
var files = j('.videos').html().split(';');
// assume first we have one video, so no need of playlist
var isplaylist = false;
// check if there are actually more than one video
if ( files.length > 1 ) {
    isplaylist = true;
    var playlist = new Array();
    for ( var i = 0; i < files.length; i++ ) {
        playlist.push ({
            url: files[i],
            title: 'Video ' + i
        });
    }
};

video.playlist = playlist;
1 голос
/ 10 октября 2010

Если я не ошибаюсь, вы хотите что-то вроде этого:

var video = {
  plugins: {
    controls: {
      playlist: false
    }
  },
  clip:  {
      wmode: 'opaque',
      baseUrl: "/video/",
      autoPlay: false
  }
}

// check if there are actually more than one video
if(files.length > 1){
  video.plugins.controls.playlist = true;
  var playlist = [];
  for ( var i = 0, l = files.length; i < l; i++ )
  {
     playlist.push({url: files[i], title: 'Video '+ i});
  }
  video.playlist = playlist;
}
else {
  video.clip.url = files[0];
}

Соответствующие записи (например, video.playlist или video.clip.url) добавляются динамически.Никогда не перемещайтесь по массивам с помощью конструкции for ( ... in ...)!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...