Hallo,
var anzahl = document.getElementsByName(name)[0].length;
document.forms.name.elements.name ist wahrscheinlich performanter.
Außerdem führst du document.getElementsByName(name)[0] immer wieder aus. Das ist wirklich ein Performancekiller. Führe es einmal aus und speichere den zurückgegebenen Knoten in einer Variable.
var eingabefeld = document.forms.formular.elements[name];
var value;
var i = 0;
while(i < anzahl){
if(document.getElementsByName(name)[0].options[i].selected == true){
value = document.getElementsByName(name)[0].options[i].value;
if (eingabefeld.options[i].selected) [
value = eingabefeld.options[i].value;
usw.
Auch den option-Elementknoten könnte man in einer Variable zwischenspeichern.
var neuername = "group".concat(zahl);
Reduziere die Komplexität wo möglich: Statt concat() geht auch ein simples "group" + zahl.
var dd_name = document.createAttribute("name");
createAttribute ist meist unnötig kompliziert, setAttribute wie gesagt schon besser.
var dd_change = document.createAttribute("onChange"); // <-- WICHTIGE STELLE 1
dd_change.nodeValue = 'javascript:addGroup("'+neuername+'");'; // <-- WICHTIGE STELLE 2
Mit einem Function-Statement erzeugt man eine Handler-Funktion, die alle Variablen des gegenwärtigen Geltungsbereiches übernimmt und somit addGroup mit dem richtigen Parameter aufrufen kann:
dropdown.onchange = function () { addGroup(neuername) };
Mathias