Se devi fare solo questo, l'id lo devi mettere nella tabella, in modo da poter essere raggiunta e che ci si può scrivere dentro.
codice:
function xxx (pos_riga) {
pos_riga--;
riga=document.getElementsByTagName('input');
for (i=0; i < riga.length; i++)
val[i]=riga[i].value;
document.getElementById("tabella").innerHTML+="<tr><td><input id='desc_3' type='text'></td><td onClick='xxx ("+(riga.length+1)+"'>aggiungi riga("+(riga.length+1)+"</td></tr>";
for (i=0; i < (riga.length+1); i++)
if (i < pos_riga )
riga[i].value=val[i];
elseif (i > pos_riga)
riga[i].value=val[i-1];
elseif (i == pos_riga)
riga[i] = '';
}
Non l'ho provato, ma dovrebbe funzionare senza problemi.
Ah, un'altra cosa, dove hai messo "aggiungi riga(n)" dovresti aggiungere nel relativo td questo '<td onClick="xxx (n)">' dove xxx è il nome della funzione che ho fatto prima mentre n sarebbe il numero della riga (che nella funzione ho chiamato "pos_riga").