Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekazywanie do nowej funkcji zmiennej z pętli for
glupik909
post
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
Go to the top of the page
+Quote Post
werdan
post
Post #2





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


http://jsfiddle.net/N7xR2/
Go to the top of the page
+Quote Post
freemp3
post
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]();
Go to the top of the page
+Quote Post
glupik909
post
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?
Go to the top of the page
+Quote Post
freemp3
post
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ć?
Go to the top of the page
+Quote Post
glupik909
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.11.2013

Ostrzeżenie: (0%)
-----


Cytat(freemp3 @ 29.11.2013, 15:28:52 ) *
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)
Go to the top of the page
+Quote Post
freemp3
post
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.
Go to the top of the page
+Quote Post
glupik909
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.11.2013

Ostrzeżenie: (0%)
-----


Cytat(freemp3 @ 29.11.2013, 16:27:59 ) *
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
Go to the top of the page
+Quote Post
freemp3
post
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()".
Go to the top of the page
+Quote Post
glupik909
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.01.2026 - 21:35