allora, ricapitoliamo. Se quello che devi fare è un esercizio scolastico, va bene. La consegna dice di fare così e tu fai così.
Ma se non è la consegna a importi di fare questa cosa, forse sarebbe meglio usare la funzione setDate() che almeno in teoria fa le cose in modo non meno performante di come le faresti tu o chiunque altro.

A questo punto sono costretto a pensare che ti sia stato dato come esercizio. Va bene.
Non ho mai visto uno stile come il tuo e questo mi crea non pochi problemi a comprendere quello che stai facendo con il tuo codice.

Io vengo da java e conosco javascript da molto poco, però mi è sempre apparso che le convenzioni per i nomi usate in javascript sono molto simili alle convenzioni di java, quindi nomi di variabili e metodi tutti in minuscolo con stile cammellato per le parole composte.
Un'altra bella tecnica di programmazione che vale la pena imparare è quella di usare nomi di variabili autoespicativi. Se sei costretto a spiegare il significato delle variabili, non ci siamo.

Ad esempio esasperato:
codice:
function sommaGiorniAData( strDataInizio , numGiorni ) {
  ...
Ora, la semplificazione dei 30 giorni per mesi è una tua semplificazione? In tal caso sono sicuro che il codice si può riscrivere in modo più elegante.
E' una semplificazione temporanea? Allora chi ti ha imposto questa cosa non è troppo sano di mente.

Dunque, io ti posso dare una mano con il pseudocodice. I dati di partenza (dopo lo split della data) sono:
- giornoDataInizio
- meseDataInizio
- annoDataInizio
- numeroGiorni

ricavare il numero di mesi è assurdo. Tra l'altro, se usi ora setDate() allora tutto questo esercizio è una idiozia. Lo usavi all'inizio e in una riga avevi finito.

dovresti procedere in questo modo:
codice:
giorniTotali = giornoDataInizio + numeroGiorni;
giornoDataFine = giorniTotali % 30;
se (giornoDataFine==0)
  giornoDataFine = 30;

mesiTotali = meseDataInizio +  (giorniTotali-giornoDataFine) / 30;
meseDataFine = mesiTotali % 12;
se (meseDataFine==0)
  meseDataFine = 12;

annoDataFine = annoDataInizio + (mesiTotali - meseDataFine) /12;
dataFine = new Date(annoDataFine, meseDataFine-1, giornoDataFine);
Spero che se ci sono errori di logica è più semplice trovarli qui che nel tuo codice.
Sono sicuro poi, che una volta ideato l'algoritmo corretto, non avrai problemi a scriverlo in javascript.

P.S.: Beh... adesso che hai un problema semplice da capire e concreto il discorso cambia..