Orlok: TypeError: obj.style is undefined

Beitrag lesen

Hallo Linuchs

window.addEventListener('load', function ( ) {
  // Web-Bilder finden
  obj = document.getElementsByClassName( "webcam" );
  alert ( "[" +obj.length +"] Web-Bilder" ); // meldet 1 Bild
  for ( i=0; i<obj.length; i++ ) {
    obj.style.border = "1px solid #000";
    obj.style.padding = "2px";
  }
});

Abgesehen von dem, was die anderen bereits gesagt haben: Mir ist in deinem Code aufgefallen, sowohl in diesem Thread also auch im Letzten, dass du offenbar jede Menge globale Variablen produzierst, da du konsequent das Schlüsselwort var auslässt.

// globale Variable obj
obj = document.getElementsByClassName( "webcam" );

// globale Variable i
for ( i=0; i<obj.length; i++)

Jede Zuweisung die du vornimmst ohne die Variable lokal zu deklarieren erzeugt eine globale Variable, also eine Eigenschaft des Objektes window, womit du völlig unnötig das Risiko von Namenskonflikten schaffst. Das heißt, du solltest deine Variablen vor der Verwendung immer deklarieren, also bei der Erzeugung der Variable das Schlüsselwort var notieren.

var obj = document.getElementsByClassName('webcam');

for (var i = 0; i < obj.length; i ++) // ...

Um dich dagegen zu schützen, versehentlich globale Variablen zu produzieren, kannst und solltest du dein Programm – oder zumindest einzelne Funktionen – im Strict Mode ausführen. Wenigstens in der Entwicklungsphase. Wenn du dann das Schlüsselwort var vergisst wird eine Ausnahme geworfen und du kannst den Fehler sofort korrigieren.

function safe ( ) {
  'use strict';
  foo = 42;
}

safe( ); // Error - assignment to undeclared variable foo

Gruß,

Orlok