XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Javascript & Ajax (http://xhtmlforum.de/forumdisplay.php?f=83)
-   -   getElementsByClassName in der Schleife (http://xhtmlforum.de/showthread.php?t=73016)

mitchm 15.10.2016 15:48

getElementsByClassName in der Schleife
 
Hallo zusammen,

ich habe ein button.

Code:

var SDbutton = document.getElementsByClassName("SDbutton");
und eine schleife

Code:

for(var i = 0; i<SDbutton.length; i++){
                console.log("test" + i);
                SDbutton[i].onclick = function(){
                        //alert(i);
                        console.log("nla " + i);
                }
        }

die erste consolen ausgabe ergibt
Code:

test0
test1
test2

aber sobald ich einen meine 3 buttons klicke, bekomme ich immer

Code:

nla3
egal welchen Button ich drücke.

warum? i geht doch nur bis 2 nicht bis 3...
wird i etwa nicht in die onclick funktion übergeben?

protonenbeschleuniger 16.10.2016 20:50

Zitat:

Zitat von mitchm (Beitrag 549989)
wird i etwa nicht in die onclick funktion übergeben?

Nein, wenn du klickst hat i den Wert nach dem letzten Schleifendurchgang.

Du musst das i kapseln, in einen eigenen Gültigkeitsbereich verlagern. So müsste es gehen.
Code:

for(var i = 0; i<SDbutton.length; i++){
                console.log("test" + i);
                SDbutton[i].onclick = (function(ii) {
                        return function(){
                        console.log("nla " + ii);
                        }
                      })(i);
        }

(Die Umbenennenung des inneren i wäre nicht notwendig)


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:01 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023