23.01.2013, 08:26
|
|
Интересующийся
|
|
Регистрация: 23.01.2013
Сообщений: 14
|
|
js составление калькулятора
Добрый вечер, пол дня ломаю голову над простейшей задачей.
По картинке все видно, пытаюсь сделать калькулятор стоимости.
Покажите где тут ошибка?)
на " 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> |
Последний раз редактировалось SleepWalker15, 23.01.2013 в 08:53.
|
|
23.01.2013, 08:34
|
|
Профессор
|
|
Регистрация: 25.08.2011
Сообщений: 420
|
|
ну так он и перемножает же, в чем проблема то?
|
|
23.01.2013, 09:23
|
|
Интересующийся
|
|
Регистрация: 23.01.2013
Сообщений: 14
|
|
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
|
|
Профессор
|
|
Регистрация: 25.08.2011
Сообщений: 420
|
|
Сообщение от 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
вообщем изучайте массивы
|
|
23.01.2013, 09:40
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,219
|
|
ммм да...
Сообщение от SleepWalker15
|
По задумке из "var time = [2,9];"
|
а сам пишешь
Сообщение от SleepWalker15
|
var time = [2,3];
|
Как это панимайт?
И пример можно было по-путевее сделать.
Как вариант
<!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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,120
|
|
SleepWalker15,
base_s = time[ format]*base[korobka];
base_s = time[times]*base[korobka];
|
|
23.01.2013, 09:53
|
|
Интересующийся
|
|
Регистрация: 23.01.2013
Сообщений: 14
|
|
Я имел в виду что если выбрать "Формат диска id="hours" на "option value="1">DVD-R/RW" то цифра 9 из массива time не умножится на любую цифру из массива base.
|
|
23.01.2013, 09:54
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,219
|
|
Сообщение от рони
|
base_s = time[format]*base[korobka];
base_s = time[times]*base[korobka];
|
Видать автор вовсе не смотрит что пишет...
|
|
23.01.2013, 09:55
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,219
|
|
Сообщение от SleepWalker15
|
Я имел в виду что если выбрать "Формат диска id="hours" на "option value="1">DVD-R/RW" то цифра 9 из массива time не умножится на любую цифру из массива base.
|
Ну нет в твоём примере такой цифры!
Проверяй что пишешь...
|
|
23.01.2013, 10:01
|
|
Профессор
|
|
Регистрация: 25.08.2011
Сообщений: 420
|
|
Здравствуйте!
Судя по вашему сообщению, вы ну совсем не знаете javascript.
Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.
На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/
Задавайте конкретные вопросы по ходу дела.
|
|
|
|