mi sugerencia es la siguiente. en php genera los options para un solo HTMLSelect, de modo que el resultado final sean los 113 options. esto lo haras una sola vez y puedes olvidarte de la funcion que crea los options en javascript. luego, cuando el usuario pida otro HTMLSelect lo clonas con javascript como te habia mostrado antes. en la clonacion se duplica una copia exacta del HTMLSelect incluyendo los options. y finalmente lo agregas al form con
appendChild.
mi opinion, tu codigo actual no es el mejor. como ya venia diciendo, tu codigo agrega los options al HTMLSelect. inclusive, cuando el usuario mueve el foco y luego vuelve al mismo HTMLSelect, la funcion vuelve y reescribe los options innecesariamente. de ahi que pues pienso que no seria lo mejor.
un ejemplo para demostrate como funcionaria mi sugerencia:
Código:
<script>
function clone(select){
var clone = select.cloneNode(true);
select.parentNode.appendChild(clone);
}
</script>
<form ... >
...
<div><select name='e[]'>
<!-- agrega los 113 options con PHP -->
<option value='valor1' />
<option value='valor2' />
<option value='valor3' />
<!-- el resto de los options -->
</select></div>
<input type='button' value='crear select' onclick="clone(this.form['e[]']);" />
</form>