Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.02.2010, 16:38
Новичок на форуме
Отправить личное сообщение для mypaku Посмотреть профиль Найти все сообщения от mypaku
 
Регистрация: 08.02.2010
Сообщений: 9

Скрипт калькулятора, не работает.
Помогите пожалуйста сделать калькулятор:
Сразу оговорю кое что - никогда не изучал яваскрипты, взял готовый который работал, попытался переделать под себя - не вышло.

вот код скрипта:
function load()
{
window.status = "Made by Ville Leivo 15.07.2002"
}

function count()
{

 //Цены на ручки

var ruch1price = 700;
var ruch2price = 1400;
 
 //Условия для ручек

if (calc.ruch1.checked){
   var wruch1 = document.calc.ruch1.value = ruch1price;
 } else {
   var wruch1 = document.calc.ruch1.value = 0;
 }

if (calc.ruch2.checked){
   var wruch2 = document.calc.ruch2.value = ruch2price;
 } else {
   var wruch2 = document.calc.ruch2.value = 0;
 }
 
document.calc.pay.value = wruch1 + wruch2;
}

код html:
<!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>Тест</title>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'/>
<script type="text/javascript" src="/js/z.js"></script>
</head>
<body>
  <table border="1" cellspacing="0" cellpadding="4">
 <tr>
 <td width="610">
 <b>Ручка один<br>ЦЕНА: 700  руб.</b>
 </td>
 <td width="15"><input name="ruch1" type="checkbox" value="on"></td>
 </tr>
 <tr>
 <td width="610">
 <b>Ручка два<br>ЦЕНА: 1400  руб.</b>
 </td>
 <td width="15"><input name="ruch2" type="checkbox" value="on"></td>
 </tr>
 <table width="625" border="2" cellspacing="0" cellpadding="4">
  <tr>
  <td align="right">
  Цена: <input type="text" name="pay" size="10" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px">
  <input type="button" onClick="count()" value="Рассчитать" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px">&nbsp;<input type="reset" value="Очистить" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px">
  </td>
  </tr>
  </table>
</body>
</html>

спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2010, 17:24
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от mypaku
никогда не изучал яваскрипты
значит пора начать
за вас делать вашу работу никто не станет
Ответить с цитированием
  #3 (permalink)  
Старый 08.02.2010, 17:50
Новичок на форуме
Отправить личное сообщение для mypaku Посмотреть профиль Найти все сообщения от mypaku
 
Регистрация: 08.02.2010
Сообщений: 9

Да я не прошу делать за меня мою работу, это единственный раз когда он мне понадобиться.
Я много чего читал прежде чем сюда написать.
Более чем на 100% уверен что тут очень простая ошибка, именно из-за моего незнания языка.
Но так же более чем на 100% уверен что указать как правильно сделать не отнимет у Вас (знающих людей) более 10 секунд!

а по теме, мне просто не понять в чем разница!

упростил скрипт в минимум:

function count()
{
var item1price = 700;
var item2price = 1400;

 if (calc.item1.checked){
   var witem1 = document.calc.item1.value = item1price;
 } else {
   var witem1 = document.calc.item1.value = 0;
 }

 if (calc.item2.checked){
   var witem2 = document.calc.item2.value = item2price;
 } else {
   var witem2 = document.calc.item2.value = 0;
 }
 document.calc.pay.value = witem1 + witem2;
}


вот с этой хтмелкой работает:
<HTML>
<HEAD>
<script src="test2.js"></script>
</HEAD>
<BODY>
<form name="calc" method="POST">
 <table width="450" border="0" cellpadding="3">
  <tr>
   <td bgcolor="#eeeeee"><span class="normalText">Элемент 1.1</span></td>
   <td bgcolor="#eeeeee" align="right">
   <input type="checkbox" name="item1" size="10" value="ON"></td>

  </tr>
  <tr>
   <td bgcolor="#eeeeee"><span class="normalText">Элемент 1.2</span></td>
   <td bgcolor="#eeeeee" align="right">
   <input type="checkbox" name="item2" size="10" value="ON"></td>
  </tr>
  <tr>
   <td bgcolor="#cccccc" colspan="2" align="right"><span class="normalText">Price $</span><input type="text" name="pay" size="10" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px"></td>
  </tr>
  <tr>
   <td bgcolor="#eeeeee" align="center"></td>
   <td bgcolor="#eeeeee" align="right">

   <input type="button" onClick="count()" value="Рассчитать" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px">&nbsp;<input type="reset" value="Очистить" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px"></td>
  </tr>
 </table>
</form>
<body>
</html>

а с этой(моей) нет:
<!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>Тест</title>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'/>
<script src="test2.js"></script>
</head>
<body>
<form name="calc" method="POST">
  <table border="1" cellspacing="0" cellpadding="4">
 <tr>
 <td width="610">
 <b>Ручка один<br>ЦЕНА: 700  руб.</b>
 </td>
 <td width="15"><input type="checkbox" name="item1"  value="ON"></td>
 </tr>
 <tr>
 <td width="610">
 <b>Ручка два<br>ЦЕНА: 1400  руб.</b>
 </td>
 <td width="15"><input type="checkbox" name="item2" value="ON"></td>
 </tr>
 <table width="625" border="2" cellspacing="0" cellpadding="4">
  <tr>
  <td align="right">
  Цена: <input type="text" name="pay" size="10" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px">
  <input type="button" onClick="count()" value="Рассчитать" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px">&nbsp;<input type="reset" value="Очистить" style="background-color:#ffffff; color:#000000; border:1px solid #000000; font-family:tahoma; font-size:8pt; letter-spacing=1px">
  </td>
  </tr>
  </table>
  </form>
</body>
</html>

пишет:
calc is not defined
http://127.0.0.1/test/test2.js
Line 6
но я не вижу разницы никакой. почему не работает???

Последний раз редактировалось mypaku, 08.02.2010 в 18:33.
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2010, 20:05
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

mypaku,
Вот, можно сократить Ваш код, ибо у Вас много ненужных проверок, смысл в том, что если у Вас будет больше 10 чекбоксов пришлось бы каждое имя чекбокса прибавлять и проверять выбрано оно или нет , а так просто вписать в html инпут и дать ему его имя и сумму в value.
function Calc()
{

var pens=0;
 var All=document.forms['calceR'];

for(var i = 0; i < All.elements.length; ++i) {

	if(All.elements[i].checked){
	pens = pens + parseInt(All.elements[i].value)  ;
	 document.getElementById('result').innerHTML=pens+' руб.';
    }
	else document.getElementById('result').innerHTML=pens+' руб.';
	}
	 
}

<form name="calceR">
	<table  border="1" cellspacing="0" cellpadding="4" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; ">
	<tr>
	<td><b>Ручки по цене 700 руб.</b></td>
	<td><input name="pen" onclick="Calc()"  type="checkbox" value="700"></td>
	</tr>
	 <tr>
	<td><b>Ручки по цене 1400 руб.</b></td>
	<td><input name="pen1"  type="checkbox" onclick="Calc()" value="1400"></td>
	</tr>
	<td>Итого:</td><td id="result" colspan="2" align="right">0 руб.</td>
	</table>
	</form>

Последний раз редактировалось JsLoveR, 08.02.2010 в 20:39.
Ответить с цитированием
  #5 (permalink)  
Старый 08.02.2010, 21:17
Новичок на форуме
Отправить личное сообщение для mypaku Посмотреть профиль Найти все сообщения от mypaku
 
Регистрация: 08.02.2010
Сообщений: 9

Спасибо огромное, очень все просто и легко.
Один вопрос, как бы результат выводить не в таблицу. а в поле для чисел(причем серенькое, заблакированное)
а то пунктов у меня будет много, а кнопку ресет хочу поставить.
Ответить с цитированием
  #6 (permalink)  
Старый 08.02.2010, 21:48
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

mypaku,
Вот:
function Calc()
{

var pens=0;
 var All=document.forms['calceR'];

   for(var i = 0; i < All.elements.length; ++i)
     {
        if(All.elements[i].checked){
	pens = pens + parseInt(All.elements[i].value)  ;
	document.calceR.res.value=pens+' руб.';}   // здесь добавил вывод результата в форму
     }
}

<form name="calceR">
	<table  border="1" cellspacing="0" cellpadding="4" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; ">
	<tr>
	<td><b>Ручки по цене 700 руб.</b></td>
	<td><input name="pen"  type="checkbox" value="700"></td>
	</tr>
	 <tr>
	<td><b>Ручки по цене 1400 руб.</b></td>
	<td><input name="pen1"  type="checkbox"  value="1400"></td>
	</tr>
	<tr>
	<td>Выполнить рассчёт:</td><td><input  onclick="Calc()" type="button"  value="расчитать"></td>
	</tr>
	<td>Итого:</td><td><input name="res"  type="text" size="8" disabled="disabled" value="0"></td>
	<tr>
	<td>Стереть:</td><td><input  type="reset"  value="Удалить всё"></td>
	</tr>
	</table>
	</form>

Последний раз редактировалось JsLoveR, 08.02.2010 в 21:54.
Ответить с цитированием
  #7 (permalink)  
Старый 08.02.2010, 22:08
Новичок на форуме
Отправить личное сообщение для mypaku Посмотреть профиль Найти все сообщения от mypaku
 
Регистрация: 08.02.2010
Сообщений: 9

Вау спасибо! я не знаю что на этом форуме благодарность, потсавил плюсик!
Как я понял этих пенов можно создавать бесконечно просто добавляя номер?
У меня планировался еще и выбор с помощью радио, а там когда меняешь имя( т.е они разные пены) то не получаеться группировки. как быть в таком случае?
Ответить с цитированием
  #8 (permalink)  
Старый 08.02.2010, 22:45
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

radio ставится в тех случаях, когда нужно выбрать одно или более вариантов из множества, например у вас акция: скидка 15% на 1 из 4 товаров, то есть не все 4 (не группу), а один, в таких случаях радио уместен.
Ответить с цитированием
  #9 (permalink)  
Старый 08.02.2010, 22:52
Новичок на форуме
Отправить личное сообщение для mypaku Посмотреть профиль Найти все сообщения от mypaku
 
Регистрация: 08.02.2010
Сообщений: 9

Да я это понимаю, у меня просто ручки немного иные имель ввиду - дверные. но это не принципиально для основы скрипта. а в радио надо запихать полотна, так как 2 полотна в один проем не поставить. должен быть выбор.
либо же реализовать это путем дисейбла других чекбоксов, но я опять же не знаю как!
Если подскажите буду при много благодарен.
Ответить с цитированием
  #10 (permalink)  
Старый 08.02.2010, 22:59
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

Допустим, 5 полотен, одно выбираешь, все остальные дисейблить?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает в FF и опера, но работает в IE(в чем дело???) Cepera Firefox/Mozilla 1 24.08.2012 16:46
Хочу скрипт! (скрипт калькулятора на сайт) Georgiy Общие вопросы Javascript 6 28.01.2010 15:09
Почему не работает скрипт, подскажите aviaks Ваши сайты и скрипты 2 05.05.2009 14:38
Скрипт не работает в опере, работает в IE XpycTuk Общие вопросы Javascript 9 06.03.2009 15:50
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32