Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   И снова калькулятор (https://javascript.ru/forum/css-html/16543-i-snova-kalkulyator.html)

novnick 12.04.2011 11:10

И снова калькулятор
 
Здравствуйте. Есть калькулятор, самопал, примитивный но, основные задачи выполняет. Eсть один нюанс который я не могу решить. При категории "Экспресс" стоимость 1 килограмма должна быть 20 грн. а при категории "Стандарт" 10 грн.
Вот этот скрипт
<script language="JavaScript">
<!-- Начало Калькулятора для сайта. Сам сценарий.
function calc()
{
var otk=parseInt(document.getElementById("otk").value);
var kuda=parseInt(document.getElementById("kuda").value);
var num3=parseInt(document.getElementById("num3").value);
var kat=parseInt(document.getElementById("kat").value);
var res=document.getElementById("result");
for(var i = 10; i <length; +i) {
if([i].checked){
p=p*(parseInt[i].value);
document.formSum.showres.value=p;
}
}
function getIndex()
{
return document.selection.selectedIndex;
}

res.innerHTML=otk+kuda+num3 + kat*i;
}

// Остальное идет как пример.-->
</script>

<table border="0" width="15%" id="table1">
<tr>
<td align="center"><p class="calcul_title">Расчет стоимости доставки по Украине</p></td>
</tr>
<tr>
<td>
<div class="calcul" style="width: 182px; height: 30px">
<form name="formx">
<p><b><font size="3">Откуда</font></b></p><select input type="text" id="otk" name="otk" onchange="calc(result)" size="1">
<option value="5"> Харьков</option>
<option value="5">Белая Церковь</option>
<option value="5" >Бердянск</option>
<option value="5" >Винница</option>
<option value="5" >Горловка</option>
<option value="5" >Днепропетровск</option>
<option value="5" >Донецк</option>
<option value="5" >Житомир</option>
<option value="5" >Запорожье</option>
<option value="5" >Ивано-Франковск</option>
<option value="5" >Измаил</option>
<option value="5" >Каменец-Подольский</option>
<option value="5" >Киев</option>
<option value="5" >Кировоград</option>
<option value="5" >Кременчуг</option>
<option value="5" >Кривой Рог</option>
<option value="5" >Луганск</option>
<option value="5" >Луцк</option>
<option value="5" >Львов</option>
<option value="5" >Макеевка</option>
<option value="5" >Мариуполь</option>
<option value="5" >Мелитополь</option>
<option value="5" >Николаев</option>
<option value="5" >Никополь</option>
<option value="5" >Одесса</option>
<option value="5" >Полтава</option>
<option value="5" >Ровно</option>
<option value="5" >Севастополь</option>
<option value="5" >Симферополь</option>
<option value="5" >Сумы</option>
<option value="5" >Тернополь</option>
<option value="5" >Ужгород</option>
<option value="5" >Херсон</option>
<option value="5" >Черкассы</option>
<option value="5" >Чернигов</option>
<option value="5" >Черновцы</option></div>
</td>
</tr>
<tr>
<td height="60">
<div class="calcul" style="width: 182px; height: 30px">

<p><b><font size="3">Куда</font></b></p><select input type="text" id="kuda" name="kuda" onchange="calc(result)" size="1">
<option value="25"> Киев</option>
<option value="25">Белая Церковь</option>
<option value="25" >Бердянск</option>
<option value="25" >Винница</option>
<option value="25" >Горловка</option>
<option value="25" >Днепропетровск</option>
<option value="25" >Донецк</option>
<option value="25" >Житомир</option>
<option value="25" >Запорожье</option>
<option value="25" >Ивано-Франковск</option>
<option value="25" >Измаил</option>
<option value="25" >Каменец-Подольский</option>
<option value="25" >Киев</option>
<option value="25" >Кировоград</option>
<option value="25" >Кременчуг</option>
<option value="25" >Кривой Рог</option>
<option value="25" >Луганск</option>
<option value="25" >Луцк</option>
<option value="25" >Львов</option>
<option value="25" >Макеевка</option>
<option value="25" >Мариуполь</option>
<option value="25" >Мелитополь</option>
<option value="25" >Николаев</option>
<option value="25" >Никополь</option>
<option value="25" >Одесса</option>
<option value="25" >Полтава</option>
<option value="25" >Ровно</option>
<option value="25" >Севастополь</option>
<option value="25" >Симферополь</option>
<option value="25" >Сумы</option>
<option value="25" >Тернополь</option>
<option value="25" >Ужгород</option>
<option value="25" >Херсон</option>
<option value="25" >Черкассы</option>
<option value="25" >Чернигов</option>
<option value="25" >Черновцы</option></div>
</td>
</tr>
<tr>
<td>
<div class="calcul" style="width: 182px; height: 30px">

<p><b><font size="3">Категория</font></b></p> <select input type="text" id="num3" name="num3" onchange="calc(result)" size="1">
<option value="0">Стандарт</option>
<option value="-10">Эконом</option>
<option value="40">Экспресс</option>
</select></div></td>
</tr>
<tr>
<td height="80">
<div class="calcul" style="width: 182px; height: 30px">

<p><b><font size="3">Вес,&nbsp;<input type="text" id="kat" name="kat" onchange="calc(result)" value=""size="15" tabindex="0,1">&nbsp;кг</font></b></p></div></td>
</tr>
</table>
<selekt><b><font size="3">Стоимость = <span id="result"></span><b>
&nbsp;грн.</font></b><br>
&nbsp;<p>&nbsp;</p>

А здесь рабочий вариант.
http://archides.ho.ua/calculator.htm
Если в выборку категории num3 задать умножить на 2 "*2" он выдает ошибку, хотя + или - работает.

Gvozd 12.04.2011 11:36

по ссылке все прекрасно работает
PS
Цитата:

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
PPS И незачем размещать такую огромную кучу кода на форум.
его вполне можно уменьшить без ущерба

eval 12.04.2011 11:44

function calc(arg)
{
   var otk=parseInt(document.getElementById("otk").value);
   var kuda=parseInt(document.getElementById("kuda").value);
   var num3=parseInt(document.getElementById("num3").value);
   var kat=parseInt(document.getElementById("kat").value);
   var res=document.getElementById("result");
   for(var i = 10; i < length; +i){
	if([i].checked){
	p=p*(parseInt[i].value);
	 document.formSum.showres.value=p;
	}
   }
	function getIndex()
	{
		return document.selection.selectedIndex;
	}
	if(arg=="kat")  res.innerHTML=(otk+kuda+num3)+(kat*2);
}

<input type="text" id="kat" name="kat" onchange="calc(this.name)" value=""size="15" tabindex="0,1">

не знаю может так ?

novnick 12.04.2011 11:48

Цитата:

Сообщение от Gvozd (Сообщение 100342)
по ссылке все прекрасно работает
PS

PPS И незачем размещать такую огромную кучу кода на форум.
его вполне можно уменьшить без ущерба

Спасибо за замечание.

novnick 12.04.2011 12:07

Цитата:

Сообщение от eval (Сообщение 100344)
function calc(arg)
{
   var otk=parseInt(document.getElementById("otk").value);
   var kuda=parseInt(document.getElementById("kuda").value);
   var num3=parseInt(document.getElementById("num3").value);
   var kat=parseInt(document.getElementById("kat").value);
   var res=document.getElementById("result");
   for(var i = 10; i < length; +i){
	if([i].checked){
	p=p*(parseInt[i].value);
	 document.formSum.showres.value=p;
	}
   }
	function getIndex()
	{
		return document.selection.selectedIndex;
	}
	if(arg=="kat")  res.innerHTML=(otk+kuda+num3)+(kat*2);
}

<input type="text" id="kat" name="kat" onchange="calc(this.name)" value=""size="15" tabindex="0,1">

не знаю может так ?

не работает. В общем надо только в выборке заставить делать умножение на 2 вот здесь:
<p><b><font size="3">Категория</font></b></p> <select input type="text" id="num3" name="num3" onchange="calc(result)" size="1">
096	<option value="0">Стандарт</option>
097	<option value="-10">Эконом</option>
098	<option value="40">Экспресс</option>
099	</select></div></td>

чтобы было так:
<p><b><font size="3">Категория</font></b></p> <select input type="text" id="num3" name="num3" onchange="calc(result)" size="1">
096	<option value="0">Стандарт</option>
097	<option value="-10">Эконом</option>
098	<option value="*2">Экспресс</option>
099	</select></div></td>

и работало


Часовой пояс GMT +3, время: 02:19.