Поиск по этому блогу

четверг, 16 февраля 2012 г.

JavaScript, JQuery, массивы, length

Очередное приключение от разработчиков JavaScript. Не знаю почему, но мне захотелось реализовать вот такую задачу:
  1. На php сделать массив и закодировать его в json.
  2. Получить данные методом ajax.
  3. Распарсить в массив JS
  4. Вывести массив на экран
  5. По клику посчитать элементы массива.
Скрипт на php занял 5-7 секунд.
<?php
for($i=1; $i<=20; $i++){
$array[$i] = "Это ячейка [$i]";
}
echo json_encode($array);
Далее тоже ничего сложного вроде бы. Всё было написано, без приключений ровно до одного момента(!)
А момент это такой: alert(array.length);

Естественно он мне врал на единицу. Т.е. в массиве 20 элементов, а мне показывает 21. Всё потому что свойство length работает по своеобразному принципу. Оно берёт последний индекс массива и добавляет к нему единицу. Но я то ведь тоже хотел индексы массива не с 0, а с 1.
Пришлось ещё и счётчик внедрить.
А вот и сам код js.
<script src="./style/jquery-1.5.1.min.js"></script>
<script>
var count = 0;
var str = new Object();
str.a = a;
var arr = new Array();
function callback(data){
str.dt = JSON.parse(data);
for(var i in str.dt){
$('#le').after(str.dt[i]+'<br />');
}
}
function a(){
s = $.get('test.php', callback);
}
function al(){

for(var i in str.dt){
if(str.dt[i]){
arr[count] = str.dt[i];
count = (count+1);
}
//alert(i+' => '+str.dt[i])
}
alert(arr.length);
}
</script>
<div id="des"></div>
<a href="javascript:str.a()">Получить</a>
<a href="javascript:al()">Тыц</a>
<div id="le"></div>

Комментариев нет:

Отправить комментарий

Количество·просмотров