[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Калькулятор на сайте.
vegasmoscow
Всем здрасьте! Изучаю принцип работы калькулятора на сайте (пример интернет магазина), нашел простенький ява скрипт, но где то, видимо, ошибка и ничего не работает. Знающие люди, подскажите, пожалуйста, что не так и где я накосячил?

HTML
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Интернет магазин</title>
<script language="javascript">
function calc () {
tov=new Array ("tov1", "tov2", "tov3");
prc=new Array (200, 400, 600);

var kolvo=0;
var stoim=0;

for (n=o; n<tov.length; n++){
if (document.mainform(tov[n])!=null) {
kolvo=kolvo+1*document.mainform(tov[n]).value;
stoim=prc[n]*document.mainform(tov[n]).value+stoim;
}
}
mess.innerHTML="Количество заказанных товаров - "+kolvo+"<br/>"+"Стоимость заказанных товаров - "+stoim;
document.mainform("stoim").value=stoim;
document.mainform("kolvo").value=kolvo;
}
</script>
</head>

<body>
<form action="zakaz.php" name="mainform">
<select name="tov1" onchange="calc ()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="tov2" onchange="calc ()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="tov3" onchange="calc ()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

<input type="submit" />

<p id="mess">Итог калькулятора должен быть здесь.</p>
<input type="hidden" name="stoim" value="0" />
<input type="hidden" name="kolvo" value="0" />

</form>
</body>






Спустя 25 минут, 46 секунд (27.07.2009 - 21:13) sergeiss написал(а):
Мож я чегой-то и не понимаю... Но что за функцию mainform ты придумал?

Спустя 15 минут, 35 секунд (27.07.2009 - 21:29) vegasmoscow написал(а):
sergeiss, вроде как в книжке пишут, имя формы mainform служит для того, чтобы ява скрипт по этому имени получал данные из этой же формы.. а где, собсно, Вас смущает это название?

Спустя 8 часов, 26 минут, 26 секунд (28.07.2009 - 05:55) olgatcpip написал(а):
Код
for (n=o; n<tov.length; n++){

почему у тебя n от буквы о начинается, а не с нуля 0?

Спустя 5 часов, 38 минут, 44 секунды (28.07.2009 - 11:34) vegasmoscow написал(а):
olgatcpip, спасибо, не внимателен я, буква "о" и "0" рядом на клаве стоят, вот и промахнулся.. только это не решило проблемы, все равно не выводит ничего! sad.gif

Спустя 2 часа, 20 минут, 55 секунд (28.07.2009 - 13:55) Sylex написал(а):
vegasmoscow
давно пора использовать DOM

Спустя 2 часа, 9 минут, 19 секунд (28.07.2009 - 16:04) vegasmoscow написал(а):
Sylex

Ах, DOM, ну так бы сразу и сказали, что DOM, а то я тут целую тему развил ни о чем..

Спустя 14 минут, 2 секунды (28.07.2009 - 16:18) Sylex написал(а):
vegasmoscow
вот именно, поэтому предлагаю закрыть тему

Спустя 2 часа, 38 минут, 27 секунд (28.07.2009 - 18:57) kirik написал(а):
Цитата (vegasmoscow @ 27.07.2009 - 13:29)
вроде как в книжке пишут, имя формы mainform служит для того, чтобы ява скрипт по этому имени получал данные из этой же формы..

Правильно пишут, вот только это не функция, а объект документа (чиатй массив элементов документа), и к нему нужно обращаться как к массиву, тоесть через квадратные скобки: mainform[tov[n]]. Везде исправляй..

Спустя 1 час, 28 минут, 11 секунд (28.07.2009 - 20:25) vegasmoscow написал(а):
Sylex, руководствуясь Вашей логикой, не то что тему, форум закрывать нужно!


kirik, спасибо, сейчас попробую все исправить.

Спустя 5 минут, 7 секунд (28.07.2009 - 20:30) Sylex написал(а):
vegasmoscow
laugh.gif

Спустя 23 часа, 11 минут, 7 секунд (29.07.2009 - 19:41) vegasmoscow написал(а):
Цитата (kirik @ 28.07.2009 - 15:57)
Правильно пишут, вот только это не функция, а объект документа (чиатй массив элементов документа), и к нему нужно обращаться как к массиву, тоесть через квадратные скобки: mainform[tov[n]]. Везде исправляй..


Исправил, только все равно ничего не выводит..

Спустя 11 часов, 52 минуты, 53 секунды (30.07.2009 - 07:34) Sylex написал(а):
блях, мух...
HTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Интернет магазин</title>
<script type="text/javascript">
function calc () {
tov = new Array ('tov1', 'tov2', 'tov3');
prc = new Array (200, 400, 600);

var kolvo = 0;
var stoim = 0;

for (n=0; n<tov.length; n++) {
if (document.getElementById(tov[n])) {
var tmp = parseInt(document.getElementById(tov[n]).value)
kolvo += tmp;
stoim += tmp*prc[n];
}
}
document.getElementById('mess').innerHTML="Количество заказанных товаров - "+kolvo+"<br />"+"Стоимость заказанных товаров - "+stoim;
document.mainform['stoim'].value = stoim;
document.mainform['kolvo'].value = kolvo;
}
</script>
</head>

<body>
<form action="zakaz.php" name="mainform">
<select name="tov1" id="tov1" onchange="calc()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="tov2" id="tov2" onchange="calc()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="tov3" id="tov3" onchange="calc()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

<input type="submit" />

<p id="mess">Итог калькулятора должен быть здесь.</p>
<input type="hidden" name="stoim" value="0" />
<input type="hidden" name="kolvo" value="0" />

</form>

</body>
</html>


хотя можно еще более практичней сделать, если знать усл. задачи

Спустя 6 часов, 14 минут, 51 секунда (30.07.2009 - 13:49) vegasmoscow написал(а):
Sylex, спасибо, сейчас попробуем, были у меня подозрения, что этот
Цитата (Sylex @ 30.07.2009 - 04:34)
getElementById
нужно куда нибудь воткнуть, хотя в книжках то зачем с ошибками пишут? Не понятно...

Спустя 1 час, 18 минут, 51 секунда (30.07.2009 - 15:08) Sylex написал(а):
vegasmoscow
1. книжек на свете очень много, человек - не машина, и он всегда будет допускать ошибки
2. в данном случае они не пишут с ошибками, ведь я тож использовал document.mainform['kolvo'].value = kolvo; - и все работает. Но не писал скобки smile.gif Но этот вариант уже немного устаревший.

Спустя 7 часов, 39 минут, 32 секунды (30.07.2009 - 22:47) vegasmoscow написал(а):
Sylex, спасибо, теперь все работает!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.