2014-02-05 2 views
0

Я пытаюсь распечатать пронумерованные ссылки на результаты поиска.Многократная распечатка массива

Если всего 5 страниц, я хочу только 5 ссылок, если есть 6 только 6 ссылок и т. Д. Только 10 ссылок могут отображаться одновременно.

Ниже я устанавливаю значение 5 страниц результатов поиска (позже я загружу это число из другой части приложения). Как распечатать количество ссылок на основе значения «allPages»?

«smallPages» находится там, когда я позже добавить «>», если есть более чем 10 страниц результатов поиска

function updatePage() { 
      var allPages = 5; 
      var smallPages = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 

      if (allPages <= 10) { 
       for (var i = 1; i < 10; i++) { 
        jQuery.each(allPages, function (index, value) { 
         $('#pages').append("<a href='#'> " + value + '</a>'); 
        }) 
       } 
      } 
+2

Удалите инструкцию for или функцию 'jQuery.each'. Вы вложили две итерации в один и тот же массив. –

+0

И даже если вы его сохранили, вы будете перебирать одну переменную, а не массив или объект. – Andy

+0

С помощью for (var i = 1; i " + allPages + ' ');} Я получаю только распечатываемый номер 5 4 раза – user3214545

ответ

0

Да много запутанных зацикливание и проверка происходит. Я хотел бы сделать один цикл структурированным, как следующее:

for(var i = 0; i < smallPages.length && i < allPages; i++) 
    $('#pages').append("<a href='#'> " + smallPages[i] + '</a>'); 

Это будет проверять, что вы не пробегают конца smallPages и что вы не добавить больше, чем указано в Allpages.

Редактировать: Рис. Я также хотел бы добавить, почему код, который у вас есть, не работает. jQuery.each выполняет итерацию по каждому элементу массива, и вы дали ему целое число.

Во-вторых, вы зацикливаете на жестком закодированном номере «10», когда вам действительно нужно перебирать длину массива с использованием .length в случае, если вы измените массив или динамически в финальной программе.

Смежные вопросы