The third parameter (onUpdate()) is the key, so if you add 5 things you have the same key 5 times, but keys are unique so asp.net only keeps one and discards the rest. If you want to add multiple times you need a unique key. If "id" is unique each time you could just use that
ScriptManager.RegisterStartupScript(this, this.GetType(), "onUpdate_" + id, "InvokeSummary(" + id + ");", true);
If "id" isn't unique then just have an int value that you increment in the loop and use that instead.