ugrás a tartalomhoz

JavaScript tömbös kérdés

chronos · 2007. Május. 16. (Sze), 17.34
Ü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:

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;
}
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.
 
1

biztos én vagyok a hülye

Fraki · 2007. Május. 16. (Sze), 21.04
de ebből nem sokat értek... Pontosabban mi a feladat, miért kellenek rádió gombok hozzá stb.

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!
2

összegzés

chronos · 2007. Május. 17. (Cs), 07.25
egy boltban kell összeadnia a kiválasztott elemek árait. mindegyikhez tartozik egy span, amiben benne van az ára (de ezt leírtam feljebb is). a mat kezdetű adja az alap árat, amit a többi százalékosan módosít. végül a végeredményt kiírja a total_price div-be.
3

na

Fraki · 2007. Május. 17. (Cs), 09.11
Igen, de továbbra sem értem, hogy mi szükség lehet itt rádiógombokra (a kerek fajta), mikor azok kizárólagosak. Nem csekboxra gondoltál (négyszögletes)? Meg ez a százalékosdi se világos...

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.
4

azért

chronos · 2007. Május. 17. (Cs), 18.52
köszönöm szépen, ezzel sikerült megoldanom.