Hallo,
du hast in deinem Codeauszug mehrere Stellen, die ungünstig und fragwürdig realisiert sind.
for (var i = 0; i < document.getElementsByTagName('option').length; i++)
Hier lässt du die JS-Engine in jedem Schleifendurchlauf erneut das ganze DOM nach option-Elementen absuchen, nur um deren Anzahl zu bekomen. Da die Anzahl aber eigentlich konstant bleibt, ist es schlauer, sie einmal _vor_ der Schleife zu ermitteln, zu speichern und dann im Schleifenkopf den gespeicherten Wert abzufragen.
if (document.getElementsByTagName('option')[i].value == paramSId) {
document.getElementsByTagName('option')[i].setAttribute('selected','selected');
}
Warum gehst du den umständlichen Weg über setAttribute(), anstatt die Eigenschaft direkt zu setzen?
document.getElementsByTagName('option')[i].selected = 'selected';
for (var i = 0; i < sId.length; i++) {
var key = 'dynVar' + i;
var val = '=document.createElement("a")';
eval(key + val);
var ce = eval(key)
Die Verwendung von eval() ist meistens keine gute Idee - ehrlich gesagt, ist dir die Verschleierung dessen, was da wirklich passieren soll, gut gelungen. Ich blick's nicht.
document.body.appendChild(ce).setAttribute('href', '#')
document.body.appendChild(ce).onclick = function() {
selection(sId[i]);
document.getElementsByName('filter')[0].click();
};
document.body.appendChild(ce).innerHTML = sId[i];
}
Das sieht falsch aus. Der zweite Aufruf von appendChild() dürfte fehlschlagen, und damit auch die Zuweisung der Eventhandler-Funktion.
So long,
Martin
Die meisten Menschen werden früher oder später durch Computer ersetzt.
Für manche würde aber auch schon ein einfacher Taschenrechner genügen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(