Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   js составление калькулятора (https://javascript.ru/forum/misc/34881-js-sostavlenie-kalkulyatora.html)

SleepWalker15 23.01.2013 08:26

js составление калькулятора
 
Вложений: 1
Добрый вечер, пол дня ломаю голову над простейшей задачей.:(

По картинке все видно, пытаюсь сделать калькулятор стоимости.

Покажите где тут ошибка?)

на " var box" не обращать внимание.

Подскажите как сделать (исправить)) так чтобы при нажатие кнопки

"рассчитать"

(<td><input type="button" value="Рассчитать" onclick="calculator_msk(this.form)">)

перемножались 2 соответствующие выбранные

(select name="numberof" id="numberof" и select name="hours" id="hours" )

цифры из массивов "base" и "time".

и ответ записывался в окошко

(input name="totalmsk" )


Код:

<script lang="JavaScript">
function calc(format,times,korobka) {
var base =  [1,2,3,4,5,6];
        var time = [2,3];
        var box = [[0,0,0,0,0,0],
                                  [0,0,0,0,0,0,],
                                  [1,1,1,1,1,2]];
       

  base_s = time[format]*base[korobka];
 
       
  total = base_s
return total;

function calculator_msk(form) {
format = eval(form.numberof.value);
times = eval(form.hours.value);
korobka = eval(form.center.value);

  form.totalmsk.value = calc(format,times,korobka);
}
</script>
<form>
<div>
<table width="532" border="0" align="center">
  <tbody><tr>
        <td width="256">Тираж CD/DVD дисков</td>
  <td width="260">
  <select name="numberof" id="numberof">
        <option value="0" selected="selected">от 100</option>
        <option value="1">от 200</option>
        <option value="2">от 300</option>
        <option value="3">от 500</option>
        <option value="4">от 700</option>
        <option value="5">от 1000</option>
 
  </select>
  </td>
</tr>
<tr>
  <td>формат Диска</td>
  <td>
  <select name="hours" id="hours">
<option value="0" selected="selected">CD-R/RW</option>
<option value="1">DVD-R/RW</option>

                          </select></td>
  </tr>
  <tr>
        <td>Коробочка</td>
        <td><select name="center" id="center">
        <option value="0" selected="selected">Нет</option>
        <option value="1">CD-box</option>
        <option value="2">DVD-box</option>
 
                          </select></td>
  </tr>
  <tr>
        <td></td>
        <td><input type="button" value="Рассчитать" onclick="calculator_msk(this.form)"> <input type="reset" value="Сброс"></td>  </tr>
  <tr>
        <td>Итого: </td>
        <td><input name="totalmsk" type="text" size="8"></td>
  </tr>
</tbody></table>
</div>
</form>


ОлегА 23.01.2013 08:34

ну так он и перемножает же, в чем проблема то?

SleepWalker15 23.01.2013 09:23

http://yadi.sk/d/P4T1GmQu2367X файл в хтмл

Проблемы:

Если выбрать "формат диска - DVD-R/RW" а не "CD-R/W"

По задумке из "var time = [2,9];" должна цифра "9" умножатся на цифру "1" из "var base = [1,2,3,4,5,6];" и

ответ записываться в "Итого". Что собственно у меня не получилось

Вторая проблема если выбрать значение в

" Тираж CD/DVD дисков" больше 300 то в ответе (итого) будет "NaN"

А по задумке из "var base = [1,2,3,4,5,6];" должна цифра "3" умножатся соответственно на "2" или "0" из

"var time = [2,9];" и ответ записываться в "Итого".

ОлегА 23.01.2013 09:35

Цитата:

Сообщение от SleepWalker15
По задумке из "var time = [2,9];" должна цифра "9" умножатся на цифру "1" из "var base = [1,2,3,4,5,6];" и

- это че это?)))) если будет цифра 1, то из массива выберется цифра 2, потому что в массиве цифры сосредоточены следующим образом, но вот по вашему примеру, (0 -> 1, 1 -> 2, 2 -> 3 ... ну и т.д.) читайте статью http://javascript.ru/Array

Цитата:

Сообщение от SleepWalker15
" Тираж CD/DVD дисков" больше 300 то в ответе (итого) будет "NaN"

- это значит он не нашел в вашем массиве ключ, по которому он должен был вытащить значение, опять таки читайте статью http://javascript.ru/Array

вообщем изучайте массивы

ksa 23.01.2013 09:40

ммм да...
Цитата:

Сообщение от SleepWalker15
По задумке из "var time = [2,9];"

а сам пишешь

Цитата:

Сообщение от SleepWalker15
var time = [2,3];

Как это панимайт?

И пример можно было по-путевее сделать. :D
Как вариант

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
var base = [1,2,3,4,5,6];
var time = [2,3];
var box = [
	[0,0,0,0,0,0],
	[0,0,0,0,0,0,],
	[1,1,1,1,1,2]
];
function calc() {
	var tr=document.getElementById('numberof').value;
	var ho=document.getElementById('hours').value;
	alert(tr+' - '+ho);
	tr=base[tr];
	ho=time[ho];
	alert(tr+' - '+ho);
	var rez=tr*ho;
	document.getElementById('totalmsk').value=rez;
};
</script>
</head>
<body>
<form>
	<div>
		<table width="532" border="0" align="center">
		<tbody>
			<tr>
				<td width="256">Тираж CD/DVD дисков</td>
				<td width="260">
					<select name="numberof" id="numberof">
						<option value="0">от 100</option>
						<option value="1">от 200</option>
						<option value="2">от 300</option>
						<option value="3">от 500</option>
						<option value="4">от 700</option>
						<option value="5">от 1000</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>формат Диска</td>
				<td>
					<select name="hours" id="hours">
						<option value="0">CD-R/RW</option>
						<option value="1">DVD-R/RW</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>Коробочка</td>
				<td>
					<select name="center" id="center">
						<option value="0">Нет</option>
						<option value="1">CD-box</option>
						<option value="2">DVD-box</option>
					</select>
				</td>
			</tr>
			<tr>
			<td></td>
			<td>
				<input type="button" value="Рассчитать" onclick="calc();"> 
				<input type="reset" value="Сброс">
			</td>  
			</tr>
			<tr>
				<td>Итого: </td>
				<td><input name="totalmsk" id="totalmsk" type="text" size="8"></td>
			</tr>
			</tbody>
		</table>
	</div>
</form>
</body>
</html>

рони 23.01.2013 09:50

SleepWalker15,
base_s = time[format]*base[korobka];
base_s = time[times]*base[korobka];

SleepWalker15 23.01.2013 09:53

Я имел в виду что если выбрать "Формат диска id="hours" на "option value="1">DVD-R/RW" то цифра 9 из массива time не умножится на любую цифру из массива base.

ksa 23.01.2013 09:54

Цитата:

Сообщение от рони (Сообщение 228878)
base_s = time[format]*base[korobka];
base_s = time[times]*base[korobka];

Видать автор вовсе не смотрит что пишет... :)

ksa 23.01.2013 09:55

Цитата:

Сообщение от SleepWalker15 (Сообщение 228880)
Я имел в виду что если выбрать "Формат диска id="hours" на "option value="1">DVD-R/RW" то цифра 9 из массива time не умножится на любую цифру из массива base.

Ну нет в твоём примере такой цифры! :D
Проверяй что пишешь...

ОлегА 23.01.2013 10:01

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.


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