Предположим, длина объекта равна 5. Затем будет добавлено 5 делений. и их идентификаторы будут area1, area2, area3, area4 и area5 ...
Неправильно. Посмотрите на ваш код здесь:
for (i=0;i<obj.length;i++){
$('#activity-div').append('<div class="area" id="area"'+i+'><h3><a href="#">'+obj[i].name+'</a></h3></div>');
}
Если существует 5 obj
действий, они будут пронумерованы в соответствии с i
. В цикле for
вы получаете значения 0, 1, 2, 3 и 4, поскольку i++
не происходит до последнего шага перед повторением цикла (то есть происходит оценка i<obj.length
до цикла, и i++
происходит после).
Исключая проблему с вашим id="area"'+i+'
(это должно быть id="area'+i+'"
), если вы ожидаете значения от 1 до 5, настройте цикл for соответствующим образом:
for( i=1; i<=obj.length; i++ ) {
$('#activity-div').append('<div class="area" id="area'+i+'"><h3><a href="#">'+obj[i].name+'</a></h3></div>');
}
Если вы хотите добавить список, вы можете сделать:
for( i=1; i<=obj.length; i++ ) {
$('#activity-div').append('<div class="area" id="area'+i+'"><h3><a href="#">'+obj[i].name+'</a></h3></div>');
$('#area'+i).append('<ul><li></li></ul');
}
Нет реальной причины создавать второй цикл for, и место размещения должно пытаться добавить к $('#area'+i)
только после его создания. Если у вас есть проблемы, может помочь использование firefox с firebug. Вы можете добавить строки, такие как:
console.log( i );
В цикл for
для отслеживания значения i при его увеличении по ступеням.