Der Martin: dynamische variable in schleife für create element und select

Beitrag lesen

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:(