TypeError: obj.style is undefined
bearbeitet von OrlokHallo Linuchs
> ~~~js
> 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 jetzt in deinem Code, sowohl in diesem Thread also auch im [Letzten](https://forum.selfhtml.org/self/2016/may/27/klick-auf-link-soll-nicht-auf-elter-parent-wirken/1668232#m1668232) aufgefallen, dass du offenbar jede Menge globale Variablen produzierst, da du konsequent das Schlüsselwort `var`{: .language-javascript} auslässt.
> ~~~ javascript
> // 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`{: .language-javascript} notieren.
~~~ javascript
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](https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/strict_mode) ausführen. Wenigstens in der Entwicklungsphase. Wenn du dann das Schlüsselwort `var`{: .language-javascript} vergisst wird eine Ausnahme geworfen und du kannst den Fehler sofort korrigieren.
~~~ javascript
function safe ( ) {
'use strict';
foo = 42;
}
safe( ); // Error - assignment to undeclared variable foo
~~~
Gruß,
Orlok