![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.11.2013 Ostrzeżenie: (0%)
|
Mam taki skrypt (przykład):
Kod var t = Object; for(w=0;w<10;w++){ t[w] = function(w){ alert(w) } } Chciałbym aby t[w] sprawiało że wyskakuje alert z zmienną w z pętli (tj t[1] = alert(1), t[2] = alert(2) itd), tylko function bierze w za parametr do nowej funkcji a nie jako zmienną z for. Próbowałem zrobić coś takiego: Kod var t = Object; for(w=0;w<10;w++){ t[w] = "alert(" + w + ");"; } Ale to nie działa (IMG:style_emoticons/default/sad.gif) Jak to zrobić? Jestem początkujący w JS Jakby był już taki temat to prosiłbym o podanie w poście linku i zamknięcie tego Szukałem na forum i znalazłem coś o callbackach ale nie wiem czy to rozwiązanie mojego problemu Ten post edytował glupik909 29.11.2013, 13:53:11 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 354 Pomógł: 100 Dołączył: 14.11.2013 Skąd: Płock Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%)
|
Nie potrzebnie przekazujesz "w" w parametrze:
Kod var t = Object; for(var w=0;w<10;w++){ t[w] = function(){ alert(w) } } Później tylko wystarczy się odwołać do odpowiedniego elementu tablicy jak do funkcji. Np dla elementu o kluczu "1": Kod tw[1]();
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.11.2013 Ostrzeżenie: (0%)
|
Thx (IMG:style_emoticons/default/biggrin.gif)
A możliwe byloby użycie tych rozwiązań do eventów w JS (np przypisywanie różnym formularzom na stronie jakiejś akcji onsubmit) czy tu już trzeba te callbacki? |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%)
|
Wszystkim formularzom jedną funkcje czy każdy ma mieć inną? Coś więcej możesz napisać?
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.11.2013 Ostrzeżenie: (0%)
|
Wszystkim formularzom jedną funkcje czy każdy ma mieć inną? Coś więcej możesz napisać? Sorry że tak mało (IMG:style_emoticons/default/biggrin.gif) Tak, wszystkim jedną (np odczyt danych z formularza i wyświetlenie w console.log), bo eksperymentuje z tym (nie chce kraść danych z formularzy) i mi nie wychodzi, a o to głównie mi chodziło, ten przykład z obiektem był nietrafiony (IMG:style_emoticons/default/biggrin.gif) |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%)
|
Możesz to zrobić dodając do każdego formularza wydarzenie onSubmit lub przy pomocy np jQuery dla wszystkich formularzy naraz.
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.11.2013 Ostrzeżenie: (0%)
|
Możesz to zrobić dodając do każdego formularza wydarzenie onSubmit lub przy pomocy np jQuery dla wszystkich formularzy naraz. Właśnie próbuję przypisać onsubmit wartość funkcji odczytującej ale mam ten problem jaki opisałem na początku (IMG:style_emoticons/default/smile.gif) Kod function odczytDanych(id){ //Moja funkcja odczytująca dane z formularza i wyświetlajace je za pomocą console.log } for(t=0;t<document.forms.length;t++){ document.forms[t].onsubmit = function(t){ odczytDanych(t); } Może te callbacki byłyby w tym pomocne? ^^ jQuery to dla mnie czarna magia (IMG:style_emoticons/default/wink.gif) Ten post edytował glupik909 29.11.2013, 15:49:06 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%)
|
Ehh... Nie wyciągnąłeś wniosków z pierwszych dwóch odpowiedzi.
Pod co przekazujesz "t" jako parametr w "function(t)"? Zostaw samo "function()". |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.11.2013 Ostrzeżenie: (0%)
|
Mam dwie wersje takiej funkcji ale obie zwracają undefined albo TypeError: document.forms[this.id] is undefined czy coś takiego (IMG:style_emoticons/default/thumbsdownsmileyanim.gif)
Kod function MyForm(id){ this.id = id; } MyForm.prototype.getChild = function(){ var string; for(t=0;t<document.forms[this.id].length;t++){ if(document.forms[this.id].children[t].constructor == HTMLInputElement && document.forms[this.id].children[t].type == "text"){ string += "form_field[" + t + "]=" + document.forms[this.id].children[t].value + "&"; } } return string.replace("undefined",""); } function callIt(id){ t = new MyForm(id); return t; } for(w=0;w<document.forms.length;w++){ document.forms[w].onsubmit = callIt(w).getChild; } function MyForm(id){ this.id = id; } MyForm.prototype.getChild = function(){ var string; for(t=0;t<document.forms[this.id].length;t++){ if(document.forms[this.id].children[t].constructor == HTMLInputElement && document.forms[this.id].children[t].type == "text" ){ string += "form_field[" + t + "]=" + document.forms[this.id].children[t].value + "&"; } } return string.replace("undefined",""); } function callIt(id){ t = new MyForm(id); return t; } var x = {} for(w=0;w<document.forms.length;w++){ x[w] = callIt(w) document.forms[w].onsubmit = x[w].getChild; } EDIT: Tema do zamknięcia, znalazłem rozwiązanie (IMG:style_emoticons/default/biggrin.gif) Kod function getChild(id){
var string; for(t=0;t<document.forms[id].children.length;t++){ if(document.forms[id].children[t].constructor == HTMLInputElement && document.forms[id].children[t].type == "text") string += "form_field[" + t + "]=" + document.forms[id].children[t].value + "&"; } } console.log(string.replace("undefined","")); } function setHandler(n,callback){ return function(){ callback(n); } } for(w=0;w<document.forms.length;w++){ document.forms[w].onsubmit = setHandler(w,getChild); } Ten post edytował glupik909 30.11.2013, 13:13:11 |
|
|
|
![]() ![]() |
|
Aktualny czas: 3.01.2026 - 21:35 |