Ciao,
scusami ma continuo a non capire, il fatto è che non ho idea dell'utilizzo che vuoi fare di questo script per cui non riesco a immaginare cosa intendi quando parli di menu, icone, link e testi ed anche la notazione che usi, che per te è sicuramente significativa, a me risulta abbastanza oscura, per esempio non ho idea di cosa intendi dire scrivendo questo:

[aggiungi icona]
[campo di testo per icona_1][rimuovi icona]
____[aggiungi nome/link]
____[campo di testo link][campo di testo nome][rimuovi]
____[campo di testo link][campo di testo nome][rimuovi]
[campo di testo per icona_2][rimuovi icona]
____[aggiungi nome/link]
____[campo di testo link][campo di testo nome][rimuovi]
____[campo di testo link][campo di testo nome][rimuovi]
quindi l'unica cosa che posso fare è di andare per tentativi dandoti degli esempi su cui lavorare, come questo:

codice:
<html>
<head>

<script type="text/javascript">
   function genera_p() {
      var n_icon = document.getElementById("n_icon").value;
      var n_link = document.getElementById("n_link").value;
      var icon;
      var url;
      if (n_icon<=5 && n_link<=10) {
         document.write("<form id=\"form_1\" name=\"form_1\">\r\n");
         for (icon=1; icon<=n_icon; icon=icon+1){
            document.write("Icona "+ icon +": <input type=\"text\" id=\"id_immagine"+ icon +"\"/>
\r\n");
            for (url=1; url<=n_link; url=url+1){
               document.write("Nome "+ url +"-"+ icon +": <input type=\"text\" id=\"id_nome"+ url +"_"+ icon +"\" />\r\nLink : <input type=\"text\" id=\"id_link"+ url +"_"+ icon +"\" />
\r\n");
            }
         }
         document.write("<input type=\"button\" value=\"Invia\" id=\"Invio\" onclick=\"genera()\" /> 
 
 \r\n<textarea cols=\"100\" rows=\"10\" id=\"codice\"></textarea>\r\n</form>\r\n");

         document.write("<script type='text/javascript'>\r\nfunction genera() {\r\ndocument.getElementById('codice').value = 'I valori inseriti sono:\\r\\n';\r\nfor (elem in document.form_1) {\r\nif (elem.indexOf('id_') == 0) {\r\ndocument.getElementById('codice').value += document.getElementById(elem).id + ' --> ' + document.getElementById(elem).value + '\\r\\n';\r\n}\r\n}\r\n}\r\n</scr"+"ipt>");

      } else {
         alert("I valori inseriti non sono validi (max icon = 5/max link = 10).")
      }

   }

</script>


</head>

<body>

<input type="text" id="n_icon">
<input type="text" id="n_link">

<input type="button" onclick="genera_p()">


</body>
</html>
nel quale nella seconda pagina i valori inseriti nelle textbox vengono trasferiti, alla pressione del pulsante, nella textarea.

Come vedi c'è una prima frase "i valori inseriti sono" che, essendo al di fuori del ciclo, potrebbe corrispondere alla apertura della tabella del tuo esempio, e poi un ciclo di esame delle textbox in cui inserire la scrittura di tutte le righe e caselle.

Per individuare gli elementi del form li ho chiamati tutti con "id_..." e poi faccio il test con la indexOf.

Nota che i "\\r\\n" sono per andare a capo nella textarea mentre i "\r\n" servono solo a rendere più leggibile il codice quando visualizzi il sorgente pagina.
Spero che possa esserti d'aiuto.