Orlok: IE führt JS funktion nicht aus

Beitrag lesen

Hallo

Ich kann dir zwar im Moment nicht sagen warum, aber der Internet Explorer scheint ein Problem mit dem Funktionsbezeichnerlanguage‘ innerhalb des Attributhandlers zu haben.

Mit einem anderen Bezeichner sollte es also funktionieren.

Allerdings würde ich ohnehin dringend anraten, JavaScript und HTML nicht zu vermischen und statt dessen deinen Event-Handler direkt im Script zu registrieren, vorzugsweise mittels der Methode addEventListener, wobei du dir die Referenz auf eine externe Funktion auch sparen kannst.

Darüber hinaus würde ich auch empfehlen, wenn es nur um den Austausch von textuellem Inhalt geht, statt innerHTML direkt textContent anzusprechen:

var button = document.getElementById('myButton'), lang = 1;

button.addEventListener('click', function ( ) {
  if (lang === 1) {
    S1.textContent = 'text1';
    // ...
    lang = 2;
  } else {
    S1.textContent = 'text2';
    // ...
    lang = 1;
  }
});

Auch ist es nicht besonders sinnvoll, bei jedem Funktionsaufruf das DOM erneut nach den zu manipulierenden Elementen zu durchsuchen, sprich, es wäre besser dies nur einmal zu tun und die zurückgegebenen Objekte in einem Array zu hinterlegen:

var elements = [ ], i;

for (i = 1; i <= 24; i += 1) {
  elements.push(document.getElementById('S' + i));
}

Über dieses Array könntest du dann innerhalb deiner Handler-Funktion mittels forEach iterieren.

Grundsätzlich sei allerdings noch angemerkt, dass der Ratschlag, HTML und JavaScript nicht zu vermischen natürlich auch andersherum gilt, das heißt, es wäre wahrscheinlich besser, statt die textuellen Inhalte in JavaScript zu setzen, diese Inhalte im HTML vorzuhalten, und es sollte, wenn es um Sprachen geht, auch das lang-Attribut für die Elemente dann entsprechend gesetzt werden.

Gruß,

Orlok