ChrisB: document.getElementsByName schleife

Beitrag lesen

Hi,

Könnte die Funktion dann in etwa so heißen?

Heißen kann sie wie sie will :-)

function hide(el) {
for (var array = 0; array <= 13; array++)
document.getElementsByName(el) ['array'].style.display = "none";
}

Den Bezeichner der Laufvariable in den eckigen Klammern in Anführungszeichen zu setzen, ist falsch - damit würdest du nur das Textliteral 'array' an der Stelle stehen haben, und das lässt sich nicht (sinnvoll) in eine Zahl umwandeln.

array ist als Bezeichner auch unglücklich. Da JavaScript case senstive ist, was Bezeichner angeht, kollidiert das zwar nicht mit dem Schlüsselwort Array - aber es ist trotzdem leicht zu verwechseln, und wird der Aufgabe der Variablen, Schleifen-Zähler zu sein, auch nicht besonders gut gerecht.

Den Wert 13 willst du da auch nicht fest drinstehen haben, sondern dich dynamisch auf die Anzahl der Elemente beziehen; wie Der Martin schon schrieb, über die length-Eigenschaft.

Und zu guter letzt, sollte man Funktionen, die irgendetwas im DOM „suchen“ müssen, nicht bei jedem Durchlauf erneut aufrufen, sondern ein mal vorher, so dass die Funktion letztendlich in etwa so aussehen könnte:

function hideElementsByName(elementName) {  
  var elements = document.getElementsByName(elementName);  
  var numElements = elements.length;  
  for(var index = 0; index < numElements; index++) {  
    elements[index].style.display = "none";  
  }  
}

MfG ChrisB

--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?