var articlesn = 12;
for(var i=1;i<=articlesn;i++)
{
alert(i);
}
С циклом-то у тебя все в порядке. У тебя в другом месте проблема. Смотри - ты пробегаешься по элементам и назначаешь им обработчик события
function() {
$("#desc"+i).show(0);
}
, но этот обработчик выполняется не сразу, а только при наведении мышкой. Естественно, там значение переменной i уже совершенно другое.
Вообще, внутри всевозможных обработчиков событий всегда доступна переменная
this, в которой содержится ссылка на элемент, которому этот обработчик принадлежит. Попробуй достучаться до нужного desc, используя данные art, на который наводится мышка.
Если не получается достучаться внутри функции, то функцию можно сгенерировать динамически во время выполнения цикла с помощью new Function вот таким образом:
new Function("", "$('#desc"+i+"').hide(0);")
При этом в тело функции будет включена не сама переменная i, а ее значение, и все пройдет, как надо.