Jap, zum einen ist die Elementanzahl variabel, zum anderen muss aber jedes einzelne Element separat bearbeitet werden können (add / remove).
Ich mag dynamische Bezeichnungen auch nicht, jedoch sind sie hier notwendig.
Beiträge von nextuser
-
-
Ich habe mal folgendes getestet:
JavaScriptst_list = document.getElementsByClassName('vi_set'); for(var i=0; i<st_list.length; i++) { window['func_mouseout'+i] = function(idx) {return function() {r_on_out(idx)};}(i); st_list[i].addEventListener('mouseout', window['func_mouseout'+i], false); }
Sowohl addEventListener, als auch removeEventListener klappen damit, jedoch habe ich irgendwie das Gefühl, als würde dieser Code nicht "gut" sein.
Meinst du, so könnte ich es lassen? Immerhin funktioniert es damit einwandfrei (zumindest nach den ersten kleinen Tests, gerade ). -
Das habe ich mir auch schon gedacht. Weißt du ne Möglichkeit, wie ich die Funktion mit Parameter trotzdem zuweisen kann?
-
-
Ich dachte, so wies da steht, da remove in einer anderen Funktion ausgeführt wird, brauche ich die global.
-
Verdammt, ich habe es gerade alleine versucht und im Netz geschaut, aber ich komme einfach nicht dahinter. Vielleicht habe ich auch einfach nur einen Denkfehler.
Es geht darum, wie ich removeEventListener richtig aufrufen muss.
Ich habe versucht bei addEventListener in der Schleife folgendes zu machen:JavaScriptst_list = document.getElementsByClassName('vi_set'); for(var i=0; i<st_list.length; i++) { window['func_mouseout'+i] = r_on_out(i); st_list[i].addEventListener('mouseout', window['func_mouseout'+i], false); }
damit ich es in einer anderen Funktion dann mit removeEventListener
wieder entfernen kann. Ich bin gard echt ein bischen durcheinander.
Im Netz wird empfohlen, wegen removeEventListener eben keine Anonymen Funktionen zu verwenden, da bei addEventListener & removeEventListener dieselben listener verwendet werden müssen?
Wie soll ich das machen?Ich schaue mich weiter nach einer Lösung um, jedoch blicke ich grad echt nicht durch.
Ist removeEventlistener überhaupt anwendbar, wenn ich die Events wie zuvor angemerk registriere? -
Der Code in der anonymen Funktion wird ja nicht beim Registrieren ausgeführt, sondern erst, wenn das Ereignis, in diesem Fall das Mouseout, eintritt. Dann ist die Schleife längst durchgelaufen und der Index hat seinen Endwert von 13.
Vielen Dank.
Das zeigt mal wieder, das konzentrierteres Einlesen (z.B. zur Funktionalität von addEventListener) doch wichtig ist.
Wenn ich deine Antwort jetzt so lese, ist es ja nur logisch, das die gewünschten Werte ja nicht beim eigentlichen Event landen, weil sie zu dem Zeitpunkt längst "verflogen" sind.Nochmals Danke.
-
Hi Leute,
ich habe ein Problem mit dem Funktionsaufruf in einem addEventListener. Es sieht wie folgt aus:
JavaScriptst_list = document.getElementsByClassName('vi_set'); for(var i=0; i<st_list.length; i++) { st_list[i].addEventListener('mouseout', function() {r_on_out(i)}, false); }
Dieser Code steht in der window.onload = function() {...} Die st_list ist global, damit ich sie in anderen Funktionen nutzen kann.
Weiter unten befindet sich die aufzurufene Funktion:
Ich teste hier mit alert, bekomme aber immer das gleiche, falsche Ergebnis.
Es ist so, es gibt 13 Elemente mit der class "vi_set", die auch richtig erkannt und in der st_list gespeichert werden. Demnach sind es also st_list[0] - st_list[12].
Beim alert bekomme ich aber jedesmal als Ausgabe "13", egal, welches Element ich gerade nehme (Die Ausgabe sollte ja eigentlich "0" bei Element1, "1" bei Element2 usw. sein)Weiß da jemand weiter?
-
Ist wohl ein Feauture bei Firefox. Genau wie es im Netz auch andere beschreiben, habe auch ich dieses Problem nur beim FF.
Einige haben geraten, "autocomplete" auf aus zu stellen. Hat bei mir zwar etwas gebracht, aber für die anderen Input-Felder ists keine gute Lösung.Hab es jetzt erstmal mit Javascript "document.getElementsByClassName()" und dann "...checked = false;" gemacht.
Weiß jemand, ob es dafür nicht auch eine generelle Lösung gibt? -
Hallo Leute,
ich hatte im letzten Jahr eine (peinliche ) Frage über Checkboxen gestellt, jedoch hat mein jetziges Problem nichts damit zu tun, weshalb ich nicht dort poste.
Ich habe mehrere normale Checkboxen und blende darunter einen Button "Auswahl anwenden" mittels JS ein, sobald eine Checkbox angeklickt wurde.
Ales läuft auch und mein Problem ist kein wirkliches Problem.
Sagen wir mal, ich habe 2 Checkboxen angekreutzt. Der Button wird angezeigt, alles ok. Wenn ich die Seite allerdings neu lade ("refreshe"), so wird
der Button logischerweise wieder ausgeblendet. Die beiden Checkboxen bleiben aber angekreuzt.
Wie kann ich alle Checkboxen beim neu laden auf "Standard" zurücksetzen, also so, das keine ausgewählt ist. Kann man z.B. mittels Javascript auf neu laden reagieren? -
Zitat
Denk an die Bedingung -> das zu and, weil Du ja gesagt hast, dass min 1 chkbox gesetzt sein muss.
Ne, was ich meinte war folgendes(siehe Anfangspost):
ZitatSoweit ich das verstanden habe, sollte ich wieder zurück zur index.html
weitergeleitet werden, sofern auch nur eines der Boxen nicht angeklickt
ist.Ich möchte also überprüfen, ob alle Checkboxen gesetzt sind. Sollte auch nur eine nicht gesetzt sein, so soll man zurück zur index.html
geleitet werden.Trotzdem Danke nochmal für die Hilfe.
-
Ach Leute, ich werd verrückt. Das Problem fing damit an, das ich 3 individuelle Checkboxen erstellen wollte.
Es hat geklappt und dann wollte ich abfragen, ob Sie geklickt wurden. So, ab da gab es die schon erwähnten Probleme.
Ich habe mich im Netz umgesehen und verschiedene Lösungen Probiert, hat alles nicht geklappt. Danach habe
ich zwei von den drei Checkboxen gelöscht und eine so geschrieben:HTML<div class="start_form"> <form action="start.php" method="post"> <label> <button type="image" name ="button_betreten" id="button_betreten"></button> <input type="checkbox" name="chek1" id="check1"><span>Checkbox 1</span> </label> </form> </div>
Die Checkbox wurde wieder angezeigt, die Abfrage jedoch wieder erfolglos. Ich hatte die Schnauze voll.
Als ich später wieder über den Code geschaut habe, habe ich entdeckt, dass ich depp beim Abfragen "check1" abfrage,
ich beim input aber die GANZE ZEIT "chek1"(k anstatt ck) stehen hatte. Getestet und es ging.
Schnell habe ich die eine Checkbox weg gemacht und meinen Ursprünglichen Code erneut
geschrieben, so wie ich ihn auch weiter Oben gepostet habe. Dabei habe ich Id**t offensichtlich vergessen,
den form-Tag richtig zu setzen.(als es beim einen geklappt hat, habe ich "nur" den input von dem Code entfernt
und dann wieder die drei Checkboxen wie vorher geschrieben. Den form-Tag habe ich so gelassen ).Als ich vorhin den Post von cottton gelesen habe, war es mir ein wenig "peinlich"
Ich meine, ich hatte lange das Problem mit "chek1-3" anstatt "check1-3". Das mit dem form-Tag habe ich deshalb einfach
sturr übersehen/lesen. Danke Leute. Habt mir echt geholfen. -
Hi Leute,
bin neu hier und dementsprechend habe ich auch nicht so viel Erfahrung mit diesem Forum. Gehe aber davon aus, das ich hier richtig bin.
Es gehr um folgendes:HTML
Alles anzeigen<div id="CheckBox"> <label> <input type="checkbox" name="check1" id="check1"> <span>Check 1</span><br><br> </label> <label> <input type="checkbox" name="check2" id="check2"> <span>Check 2</span><br><br> </label> <label> <input type="checkbox" name="check3" id="check3"> <span>Check 3</span> </label> <div class="start_form"><form action="start.php" method="post"><label><button type="image" name ="button_betreten" id="button_betreten"></button></label></form></div> </div>
So sehen meine Checkboxen aus. Wenn man auf den Button klickt, so wird man zu start.php weitergeleitet, wo folgendes abgefragt wird:
PHPif(!isset($_POST['check1']) || !isset($_POST['check2']) || !isset($_POST['check3'])) { header("Location: index.html"); exit(); }
Soweit ich das verstanden habe, sollte ich wieder zurück zur index.html weitergeleitet werden, sofern auch nur eines der Boxen nicht angeklickt ist.
Jetzt ist es aber so, das ich IMMER bei der index.html lande. Habe alles ausprobiert. Alles angecklickt, teile angecklickt, nichts angecklickt. Es ist immer das gleiche.
Ich habe es auch mit value bei den Checkboxen versucht, gleiches Ergebnis.
Könnt ihr mir da weiterhelfen?