JavaScript tömbös kérdés
Üdv mindenki.
Bocs, hogy ilyen alap kérdéssel zaklatom itt a fórum kedélyeit, és még inkább bocs, ha már volt erről szó, de beleszaladtam egy elég bosszantó problémába JS téren. Egy form radio elemein zongoráznék végig. Mindegyikhez tartozik egy "pc_"-vel kezdődő, és a radio id-jével folytatódó id-jű span (tehát a 'fp_1' radio spanja 'pc_fp_1'. A "mat"-os radio adja az alap számot, amit aztán a többi radio értéke százalékosan növelne (tehát a span tartalma a százalék, amennyivel emelni kell). Eddig ilyenem volt:viszont ez csak a 'baseval'-t írja ki, aztán "NaNNaN", amit abszolút nem tudok hova tenni. Ráadásul azt a hibát adja, hogy "array has no properties". Ezt a fenti kódot hol és hogyan írjam át, hogy rendeltetésszerűen működjön? Előre is köszönöm a válaszokat.
■ Bocs, hogy ilyen alap kérdéssel zaklatom itt a fórum kedélyeit, és még inkább bocs, ha már volt erről szó, de beleszaladtam egy elég bosszantó problémába JS téren. Egy form radio elemein zongoráznék végig. Mindegyikhez tartozik egy "pc_"-vel kezdődő, és a radio id-jével folytatódó id-jű span (tehát a 'fp_1' radio spanja 'pc_fp_1'. A "mat"-os radio adja az alap számot, amit aztán a többi radio értéke százalékosan növelne (tehát a span tartalma a százalék, amennyivel emelni kell). Eddig ilyenem volt:
function calculate() {
var form = document.getElementById('shopform');
var array = [];
var temp;
var baseval = 0;
var retval = 0;
var k = 0;
var i = 0;
for(i = 0; i < form.elements.length; i++) {
if(form.elements[i].checked) {
if(form.elements[i].id.substr(0,3) == 'mat') {
baseval = document.getElementById('pc_'+form.elements[i].id).innerHTML;
} else {
array[k] = parseInt(document.getElementById('pc_'+form.elements[i].id).innerHTML);
k++;
}
}
}
retval = baseval;
for(i = 0; i < array.length; i++) {
temp = (baseval/100)*array[k];
retval = retval+temp;
}
out = retval+" HUF";
document.getElementById('total_price').innerHTML = out;
}
biztos én vagyok a hülye
Annyit mondhatok, hogy a 8. sorra nincs szükség. Aztán a 21. sorban (miért nincs sorszámozás a weblabor syntax kiemelőjében?) az array[k] értéke undefined, így az az utáni kalkulációk mind NaN-t adnak vissza (Not A Number) Ha két NaN-t összeadsz, abból könnyen lehet NaNNaN :)
De fogalmam sincs, mit akar csinálni a kódod.
Egyébként pedig használj Firebugot debugoláshoz!
összegzés
na
De mindegy, az ránézésre látszik, hogy mint mondtam, az array[k]-nál elhasal a kód, mert az mindig undefined (a tömb bővítése után növeled a 'k' mutatót). Azt is mondtam, hogy fölösleges a 'k' változó, használj helyette array.push()-t. A 21. sorba array[k] helyett array[i] kéne.
azért