Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi
glupik909
post
Post #2





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

Posty w temacie


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: 29.12.2025 - 18:50