Показать сообщение отдельно
  #1 (permalink)  
Старый 29.03.2013, 11:19
Новичок на форуме
Отправить личное сообщение для Kylak Посмотреть профиль Найти все сообщения от Kylak
 
Регистрация: 29.03.2013
Сообщений: 6

Помогите найти где кроется ошибка.
В скрипте выполняется суммирование количества товаров по количеству и приводится все к одной сумме, но во незадача если первый раз считает, то второй после сброса он начинает не правильно выдавать итоговую сумму. Помогите в этом деле, где ошибка в скрипте?


<html>
<head>
<title>site</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript">
function tovar(nom,descrip,money) {
nazv[nom] = descrip;
cost[nom] = money;
}

function writeTable() {
num=4; /* num - количество строк для заказа товара */
len=4; /* len - количество предлагаемых товаров в раскрывающемся списке (в столбце Наименование) */
max=4; /* max - максимально допустимое количество единиц заказываемого товара (в столбце Количество) */
nazv = new Array(len);
cost = new Array(len);
tovar(0,'продукт1',12441000); /* Перечень товаров и цен. Число товаров в перечне должно соответствовать константе len! */
tovar(1,'продукт2',3784500);
tovar(2,'продукт3',3436500);
tovar(3,'продукт4',6960000);
sum = new Array(num);
for (j=0; j<num; j++)
sum[j]=0;
document.write('<table width="70%" border="1" cellspacing="0" cellpadding="0"><tr>');
document.write('<td height="45" width="4%"><div align="center"><font face="Georgia">№</font></div></td>');
document.write('<td height="45" width="32%"><div align="center"><font face="Georgia">Наименование</font></div></td>');
document.write('<td height="45" width="19%"><div align="center"><font face="Georgia">Количество</font></div></td>');
document.write('<td height="45" width="18%"><div align="center"><font face="Georgia">Сумма</font></div></td>');
document.write('<td height="'+ (34*num+45) +'" valign="middle" rowspan="'+ (num+1)
+'" width="27%"><div align="center"><form name="form1" method="post" action="">'

+'<input type="text" name="all" class="colortext" size=12 maxlength=12 value="0" readonly>'
+'<br><br><input type="reset" value="Сброс"><br></div></td></tr>');
for (i=0; i<num; i++)
writeTableRow(i);
document.write('</table>');
}

function writeTableRow(i) {
document.write('<tr><td height="34" width="4%"><div align="center"><font face="Georgia">'+ (i+1) +'</font></div></td>');
document.write('<td height="34" width="32%"><div align="center"><select name="name'+ i +'" onChange="update('+ i +')">');
for (j=0; j<len; j++)
document.write('<option value="'+ j +'">'+ nazv[j] +' - '+ cost[j] +' руб.</option>');
document.write('</select></font></div></td>');
document.write('<td height="34" width="19%">');
for (j=0; j<max;j++)
document.write('<p><input type="radio" name="radiobutton'+ i +'" value="'+ (j+1) +'" onClick="update('+ i +')"> '+ (j+1) +'</p>');
document.write('</td><td height="34" width="18%"><div align="center"><font face="Georgia"> '
+ '<input class="colortext" type="text" name="total'+ i +'" size=12 maxlength=12 value="0" readonly>');
document.write('</font></div></td></tr>');
}

function update(i) {
eval('for (var k=0; k<max; k++) { if (document.form1.radiobutton'+ i +'[k].checked) { break } } kol = document.form1.radiobutton'+ i +'[k].value;');
eval('sum[i] = kol * cost[document.form1.name'+ i +'.selectedIndex];');
eval('document.form1.total'+ i +'.value = sum[i];');
var x=0;
summa=0;
for (j=0; j<num; j++) {
x=summa;
summa=x+sum[j];
}
document.form1.all.value = summa;
}
</script>
</head>
<body>
<script language="JavaScript">
writeTable();
</script>
</body>
</html>


122.zip
Ответить с цитированием