2014-01-23 4 views
0
var layers = {}; 

//Add new layer 
layer.markers = new L.Group(); 
layer.Name = t; 

layers.layer = layer; 

Дает ошибку layer.length по-прежнему «не определено». Почему это так? Я проверил в журнале, что слои содержат элемент.JavaScript: добавление и удаление объектов из массива

+3

'layers' не является массивом - это общий объект, а объекты не имеют' length' – georg

+0

Кроме того, где определяется L? –

ответ

1

layers не является массивом. Если вы хотите сохранить его как литерал объекта, и проверить, если он пуст, попробуйте определения что-то вроде этого:

Object.isEmpty = function(obj) { 
    for (var p in obj) 
     if (obj.hasOwnProperty(p)) return false; 
    return true; 
}; 

И использовать

if (!Object.isEmpty(layers)) { ... 

вместо этого.

0

Вы не добавляете в массив. Последняя строка должна быть:

layers.push(layer); 
0

Простой вопрос. layer - это объект, а не массив.

Что вам нужно сделать, это заменить слои на следующие.

var layers = new Array(); 

И заменить добавления кода слоя из

layers.layer = layer; 

в

layers.push(layer); 
Смежные вопросы