Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Свой калькулятор
 
 автор: NIK   (20.11.2005 в 16:05)   письмо автору
 
 

Нужно написать калькулятор на JavaScript'е. Приминяться он будет на сайте текстильной фабрики (для скрипта интернет магазина) для вычесления цены комплекта (комплекты с постельным бельём).

Имеем:
[CODE]
<form name='goods'>
<table>
<tr>
<td colspan='4' align='center'>
<b>Пододеяльник</b>
</td>
</tr>
<tr>
<td>&nbsp;
</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-е сообщение

   
 
 автор: codexomega   (20.11.2005 в 19:27)   письмо автору
 
   для: 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>&nbsp;
</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>

   
 
 автор: NIK   (20.11.2005 в 21:41)   письмо автору
 
   для: codexomega   (20.11.2005 в 19:27)
 

codexomega, огромное человеческое спасибо!!!

PS: мб посоветуете книжонку о JavaScript'e, а то я очень плохо разбираюсь, а он нужен в каждом проекте...

   
 
 автор: goddamn   (20.11.2005 в 21:44)   письмо автору
 
   для: NIK   (20.11.2005 в 21:41)
 

ну вот, например http://computer.edu.ru/lib/jscript/index.htm
а вобще goole.com ya.ru и т.д.... :)

или нужен бумажный вариант ?

   
 
 автор: codexomega   (21.11.2005 в 00:43)   письмо автору
 
   для: NIK   (20.11.2005 в 21:41)
 

Вот еще::
http://www.computerbooks.ru/download/javascript/javascript.html

   
 
 автор: NIK   (04.12.2005 в 13:48)   письмо автору
 
   для: codexomega   (21.11.2005 в 00:43)
 

нужен бумажный вариант, но всё-равно спасибо!

А вот ещё задача на совершенно туже тему. Код остался тот же. Только теперь требуется добавить кнопку "Выбор ткани", при её нажатии открывется новое окно (далее окно 2) с списком тканей в виде изображений и цена этой ткани. При нажатии на изображение, окно 2 закрывается, а выбранная ткань с помощью функции плюсуется к цене за наволочки и тд.

Вопрос: как обратится к окну-родителю (окно 1)?

   
 
 автор: codexomega   (04.12.2005 в 18:15)   письмо автору
 
   для: NIK   (04.12.2005 в 13:48)
 

Подобный вопрос обсуждался здесь:
http://softtime.ru/forum/read.php?id_forum=4&id_theme=9905&page=1

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования