[ maxa @ 05.12.2005. 16:44 ] @
Code:
function rad() {

var broj = document.sform.brojac.value;

var racun;

}

for ( i = 1; i < broj; i++) {
var kk = document.sform.kol.value;
var hh = document.sform.'H'[i].value;

racun = kk + hh;

}

document.sform.kol2.value = racun;

}




Na stranici ima vise text-boksova koji se zovu H1, H2, H3, H4.....

E kada kliknem na dugme koje poziva funkciju rad skripta treba da iz svih text polja (H1, H2, H3, H4...) izvuce vrednost, da je sabere i zbir prikaze u text polju kol2.

Probao sam razne kombinacije ali mi stalno javlja gresku, mislim da je greska u liniji

var hh = document.sform.'H'.value;

ali ne znam kako da sredim to???
[ Br@nkoR @ 05.12.2005. 19:04 ] @
Nešto ovako:
Code:

var hh = eval('document.sform.H'+i+'.value');



Probaj i ovako:
html:
Code:

<form action="javascript: rad()" name="sform">
<input type="text" name="H[]" /> <br />
<input type="text" name="H[]" /><br />
Zbir: <input type="text" name="kol2" /> <br />
<input type="submit" value="ok" />
</form>

js:
Code:

function rad() {
 var zbir = 0;
 for(var i=0; i<document.sform.elements['H[]'].length; i++){
   zbir += parseInt(document.sform.elements['H[]'][i].value);
 }
 document.sform.kol2.value = zbir;
}



[Ovu poruku je menjao Br@nkoR dana 05.12.2005. u 20:09 GMT+1]
[ maxa @ 06.12.2005. 17:36 ] @

ovaj deo koda mi odgovara:
var hh = eval('document.sform.H'+i+'.value');

ali je problem u tome sto se u text boksu ispisuju svi brojevi a ne zbir brojeva.

npr. txt polje sadrzi:
H1 = 5
H3 = 2

u text-boksu "kol2" ispisuje mi 52 a trebalo bi 7???

ne sabire vec samo dodaje.


Br@nkoR druga mogucnost mi ne odgovara zbog php-a koji kasnije obradjuje ta polja.

[ Br@nkoR @ 06.12.2005. 18:43 ] @
parseInt()

Code:

var hh = parseInt(eval('document.sform.H'+i+'.value'));


Takođe sve numeričke veličine (cifre) koje učitavaš iz forme propusti kroz parseInt()
[ maxa @ 06.12.2005. 22:31 ] @


Evo i to sam probao i rezultat u text-boksu je NaN ili dobijem neki rezultat ali samo kada je zadnji text-box popunjen????
[ noviKorisnik @ 07.12.2005. 07:55 ] @
Evo male modifikacije Brankovog predloga od pre nekoliko poruka...
Code:
function rad() {
 var zbir = 0;
 var v;
 for(var i=0; i<document.sform.elements['H[]'].length; i++){
   v = parseInt (document.sform.elements['H[]'][i].value);
   if (!isNaN (v)) zbir += v;
 }
 document.sform.kol2.value = zbir;
}
[ noviKorisnik @ 07.12.2005. 08:00 ] @
Ne videh ovo :-)
Citat:
maxa: Br@nkoR druga mogucnost mi ne odgovara zbog php-a koji kasnije obradjuje ta polja.

To ne treba da ti bude problem u PHP-u, izuzev ukoliko nemaš mogućnosti da diraš php kod. Vrednosti polja ćeš umesto u promenljivim $_POST ['H1'], $_POST ['H2'],... imati u promenljivim $_POST ['H'] [0], $_POST ['H'] [1],.... one se prosleđuju ovako kao niz.
[ noviKorisnik @ 07.12.2005. 08:13 ] @
... a evo da radi i uz H1, H2,... imenovanja
Code:
function rad() {
    var zbir = 0;
    var h;
    var v;
    for (var i = 1; true; i++)
    {
        h = document.sform.elements ['H' + i];
        if (typeof (h) != 'object') break;
        v = parseInt (h.value, 10);
        if (!isNaN (v)) zbir += v;
    }
    document.sform.kol2.value = zbir;
}
[ maxa @ 07.12.2005. 22:09 ] @


Odlicno noviKorisnik :))

radi skoro savrseno.

Jos samo jedno pitanje, kako da se dobiju decimale tj. ovaj kod sto si postavi radi samo sa celim brojevima, ako imas broj 13.25 on ga zaokruzi na 13???



Hvala puno.
[ Br@nkoR @ 08.12.2005. 07:17 ] @
Umesto parseInt() koristi parseFloat()
[ maxa @ 08.12.2005. 13:12 ] @

To je to :)
Hvala puno svima, odlicno parce koda.
[ maxa @ 08.12.2005. 18:29 ] @

Jos jedno pitanje,

zasto ne radi mnozenje u ovoj liniji:

if (!isNaN (v)) zbir *= v;

probao sam i


if (!isNaN (v)) zbir = zbir * v;

ali ne dobijam nikakav rezultat???

Dok sabiranje i oduzimanje radi savrseno.
[ Br@nkoR @ 08.12.2005. 21:01 ] @
Promeni početnu vrednost:
Code:
var zbir = 0;

u
Code:
var zbir = 1;
[ noviKorisnik @ 09.12.2005. 08:48 ] @
Ako se radi množenje, dobije se PROIZVOD :-)
[ maxa @ 09.12.2005. 12:52 ] @



Svaka vam cast, koliko sitnica ima ovaj JavaScript nikad nebi provalio da treba da postavim 1 umesto 0 a probao sam desetine kombinacija i formula.

noviKorisnik i Br@nkoR hvala vam puno, proizvod dobijen :)