|
|
|
| Нужно написать калькулятор на JavaScript'е. Приминяться он будет на сайте текстильной фабрики (для скрипта интернет магазина) для вычесления цены комплекта (комплекты с постельным бельём).
Имеем:
[CODE]
<form name='goods'>
<table>
<tr>
<td colspan='4' align='center'>
<b>Пододеяльник</b>
</td>
</tr>
<tr>
<td>
</td>
<td align='center'>
Размер
</td>
<td align='center'>
Количество
</td>
<td align='center'>
Цена
</td>
</tr>
<tr>
<td width='15%'>
<input type='radio' name='blanket_size' value='150x205' checked>
</td>
<td>
150x205
</td>
<td align='center'>
<input type='text' name='blanket_num1' style='width: 30px; height: 18px;' value='1'>
</td>
<td align='center'>
<input type='text' name='blanket_price1' value='300$' disabled>
</td>
</tr>
<tr>
<td width='15%'>
<input type='radio' name='blanket_size' value='180x205' checked>
</td>
<td>
180x205
</td>
<td align='center'>
<input type='text' name='blanket_num2' style='width: 30px; height: 18px;' value='1'>
</td>
<td align='center'>
<input type='text' name='blanket_price2' value='350$' disabled>
</td>
</tr>
<tr>
<td width='15%'>
<input type='radio' name='blanket_size' value='200x205' checked>
</td>
<td>
200x205
</td>
<td align='center'>
<input type='text' name='blanket_num3' style='width: 30px; height: 18px;' value='1'>
</td>
<td align='center'>
<input type='text' name='blanket_price3' value='400$' disabled>
</td>
</tr>
</table>
<input type='button' value='Вычислить' onClick=Calculator()>
<input type='text' name='price' disabled>
</form>[/CODE]
Функция для вычисления:
[CODE]
function Calculator() {
if (document.goods.blanket_size.value = '150x205') {
alert("Вычисляем цену пододеяльника #1");
var num = document.goods.blanket_num1.value;
var price = document.goods.blanket_price1.value;
var blanket_price = num*price;
}
if (document.goods.blanket_size.value = '180x205') {
alert("Вычисляем цену пододеяльника #2");
var num = document.goods.blanket_num2.value;
var price = document.goods.blanket_price2.value;
var blanket_price = num*price;
}
if (document.goods.blanket_size.value = '200x205') {
alert("Вычисляем цену пододеяльника #3");
var num = document.goods.blanket_num3.value;
var price = document.goods.blanket_price3.value;
var blanket_price = num*price;
}
document.goods.price.value = blanket_price;
}
[/CODE]
То есть, функция проверяет и анализирует значение выбранного пункта radio и формирует соответствующую цену и количество, перемножает результат, выводит его в поле price.
В чём проблема: функция не анализирует значение radio. Точнее сказать она анализирует не выбранный пункт radio, а все пункты подряд. То есть если нажать на вычислить, появится 3 сообщения alert, вместо одного.
Помогите пожалуйста найти ошибку, сам я в JavaScript разбираюсь плохо, не мой профиль так сказать :) буду вечно благодарен...
PS: гы, 9600-е сообщение | |
|
|
|
|
|
|
|
для: NIK
(20.11.2005 в 16:05)
| | Подправил ваш код.
Во первых, радио бутоны с одинаковым именем - это массив. К каждой присвоен свой Id, начиная с 0.
Второе, у вас не работала функция по вычислению, так как поля содержали смесь из чисел и строк. Получалось типа этого: price = 1 * 350$ , что выдавало ошибку.
Затем, вы повторялись с переменными, я вывел их из функций, сделав глобальными.
Все, теперь работает.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script language="javascript">
// global variables
var blanket_price = 0;
var num = 0;
var price = 0;
// functions
function Calculator() {
if (document.goods.blanket_size[0].checked == true) {
alert("Вычисляем цену пододеяльника #1");
num = document.goods.blanket_num1.value;
price = document.goods.blanket_price1.value;
blanket_price = num*price;
}
if (document.goods.blanket_size[1].checked == true) {
alert("Вычисляем цену пододеяльника #2");
num = document.goods.blanket_num2.value;
price = document.goods.blanket_price2.value;
blanket_price = num*price;
}
if (document.goods.blanket_size[2].checked == true) {
alert("Вычисляем цену пододеяльника #3");
num = document.goods.blanket_num3.value;
price = document.goods.blanket_price3.value;
blanket_price = num*price;
}
document.goods.price.value = blanket_price;
}
</script>
</head>
<body>
<form name='goods'>
<table>
<tr>
<td colspan='4' align='center'>
<b>Пододеяльник</b>
</td>
</tr>
<tr>
<td>
</td>
<td align='center'>
Размер
</td>
<td align='center'>
Количество
</td>
<td align='center'>
Цена
</td>
</tr>
<tr>
<td width='15%'>
<input type='radio' name='blanket_size' value='150x205' checked>
</td>
<td>
150x205
</td>
<td align='center'>
<input type='text' name='blanket_num1' style='width: 30px; height: 18px;' value=1>
</td>
<td align='center'>
<input type='text' name='blanket_price1' value=300 disabled>
</td>
</tr>
<tr>
<td width='15%'>
<input type='radio' name='blanket_size' value='180x205' checked>
</td>
<td>
180x205
</td>
<td align='center'>
<input type='text' name='blanket_num2' style='width: 30px; height: 18px;' value=1>
</td>
<td align='center'>
<input type='text' name='blanket_price2' value=350 disabled>
</td>
</tr>
<tr>
<td width='15%'>
<input type='radio' name='blanket_size' value='200x205' checked>
</td>
<td>
200x205
</td>
<td align='center'>
<input type='text' name='blanket_num3' style='width: 30px; height: 18px;' value=1>
</td>
<td align='center'>
<input type='text' name='blanket_price3' value=400 disabled>
</td>
</tr>
</table>
<input type='button' value='Вычислить' onClick=Calculator()>
<input type='text' name='price' disabled>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: codexomega
(20.11.2005 в 19:27)
| | codexomega, огромное человеческое спасибо!!!
PS: мб посоветуете книжонку о JavaScript'e, а то я очень плохо разбираюсь, а он нужен в каждом проекте... | |
|
|
|
|
|
|
|
для: NIK
(20.11.2005 в 21:41)
| | ну вот, например http://computer.edu.ru/lib/jscript/index.htm
а вобще goole.com ya.ru и т.д.... :)
или нужен бумажный вариант ? | |
|
|
|
|
|
|
|
|
для: codexomega
(21.11.2005 в 00:43)
| | нужен бумажный вариант, но всё-равно спасибо!
А вот ещё задача на совершенно туже тему. Код остался тот же. Только теперь требуется добавить кнопку "Выбор ткани", при её нажатии открывется новое окно (далее окно 2) с списком тканей в виде изображений и цена этой ткани. При нажатии на изображение, окно 2 закрывается, а выбранная ткань с помощью функции плюсуется к цене за наволочки и тд.
Вопрос: как обратится к окну-родителю (окно 1)? | |
|
|
|
|