Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не могу разобраться с калькулятором (https://javascript.ru/forum/misc/32092-ne-mogu-razobratsya-s-kalkulyatorom.html)

Innuenze 03.10.2012 09:06

Не могу разобраться с калькулятором
 
Имеется js скрипт калькулятора:
var calculator = function(){
if ($('calculation') !== null) {
/*Вставить в любое место в javascripte, где удобно*/
arDiametr = []; //массив цен.
arDiametr[160] = 4000; //ключ - размер, значениен цена.
arDiametr[180] = 5000;
arDiametr[200] = 6000;
arDiametr[220] = 6500;
arDiametr[240] = 7000;
arDiametr[260] = 7500;
arDiametr[280] = 8000;
arDiametr[300] = 8500;
arDiametr[320] = 10500;
/*Вставить в любое место в javascripte, где удобно*/
var fixSizeW = 0; //доп мм для размера дома
var fixSizeOth = 0; //доп мм для размера надстроек
$('calculation').addEvent('click', function(){
var allSize = $(document.body).getElements('.Size');
var price = $(document.body).getElementById('diametr').get('value');
var space = 0;
Array.each(allSize, function(elem){
var inputs = elem.getElements('input');
var count = (elem.id === 'sizeWood')? $(document).getElement('input[name=level]').value : 1;
var addSize = (elem.id === 'sizeWood')? fixSizeW : fixSizeOth;
if (/[0-9]+/.test(inputs[0].value) !== false && /[0-9]+/.test(inputs[1].value) !== false)
space += (parseInt(inputs[0].value) + addSize) * (parseInt(inputs[1].value) + addSize) * count;
});
$(document).getElements('input[name=result]')[0].value = (space / 1000000 * price).toFixed(2);
});
var addNewStructure = function(){
var inputs = $(this).getParent('.Size').getElements('input');
var needAdd = true;
Array.each(inputs, function(elem){
var inp = $(document).getElements('input[name=' + elem.name + ']');
Array.each(inp, function(el){
if (/[0-9]+/.test(el.value) === false) {
needAdd = false;
}
});
})
if (needAdd === true) {
var newStruct = $(this).getParent('.Wood').clone();
Array.each(newStruct.getElements('input'), function(elem){
elem.value = '';
});
newStruct.inject($(this).getParent('.Wood'), 'after');
$(document).getElements('.StructureHouse input[type=text][name!=level]').removeEvent('blur').addEvent('blur', addNewStructure);
}
}
$(document).getElements('.StructureHouse input[type=text][name!=level]').addEvent('blur', addNewStructure);
var createSelect = (function() {
var selObj = $(document).getElementById('diametr'); 
Array.each(arDiametr, function(val, key){
var newOption = new Element('option', {
'value': val,
'text': key
}
);
newOption.inject(selObj);
});
}())
}
$(document.body).addEvent('contextmenu', function(e){
e.event.cancelBubble = true;
return false;
});
}


И форма вывода:

<center>
	<div class="Main">
		<div class="CalcContainer">
			<div class="CalcHeader">
				<h1>Калькулятор</h1>
				<div class="B"></div>
			</div><!--.CalcHeader-->
			<div class="CalcForm">
				<div class="TypeWood">
					<div class="Wood">
						<div class="CalcTitle">
							Размер:
						</div><!--.CalcTitle-->
						<div class="Size" id="sizeWood">
							<input type="text" name="lengthWood" value="" size="4" /> x
							<input type="text" name="widthWood" value="" size="4" /> 
							<span>(в мм)</span>
						</div><!--.Size-->
						<div class="B"></div>
					</div><!--.Wood-->
					<div class="Wood">
						<div class="CalcTitle">
								Диаметр бревна:
						</div><!--.CalcTitle-->
						<div class="SelectDiametr" id="selectDiametr">
							<select id="diametr">
								<option disabled="disabled">Выберите диаметр</option>
<option>160</option>
<option>180</option>
<option>200</option>
<option>220</option>
<option>240</option>
<option>260</option>
<option>280</option>
<option>300</option>
<option>320</option>
							</select>
							<span>(в мм)</span>
						</div><!--.SelectDiametr-->
						<div class="B"></div>
					</div><!--.Wood-->
					<div class="B"></div>
				</div><!--.TypeWood-->
				<div class="StructureHouse">
					<div class="Wood">
						<div class="CalcTitle">
								Этажи:
						</div><!--.CalcTitle-->
						<div class="CountLevel" id="countLevel">
							<input type="text" name="level" value="" size="4" />
							<span>(в едн)</span>
						</div><!--.CountLevel-->
						<div class="B"></div>
					</div><!--.Wood-->
					<div class="Wood">
						<div class="CalcTitle">
								Крыльцо:
						</div><!--.CalcTitle-->
						<div class="Size" id="sizePorch">
							<input type="text" name="lengthPorch" value="" size="4" /> x
							<input type="text" name="widthPorch" value="" size="4" /> 
							<span>(в мм)</span>
						</div><!--.Size-->
						<div class="B"></div>
					</div><!--.Wood-->
					<div class="Wood">
						<div class="CalcTitle">
								Терраса:
						</div><!--.CalcTitle-->
						<div class="Size" id="sizeTerrace">
							<input type="text" name="lengthTerrace" value="" size="4" /> x
							<input type="text" name="widthTerrace" value="" size="4" /> 
							<span>(в мм)</span>
						</div><!--.Size-->
						<div class="B"></div>
					</div><!--.Wood-->
					<div class="Wood">
						<div class="CalcTitle">
								Балкон:
						</div><!--.CalcTitle-->
						<div class="Size" id="sizeBalcony">
							<input type="text" name="lengthBalcony" value="" size="4" /> x
							<input type="text" name="widthBalcony" value="" size="4" /> 
							<span>(в мм)</span>
						</div><!--.Size-->
						<div class="B"></div>
					</div><!--.Wood-->
					<div class="B"></div>
				</div><!--.StructureHouse-->
				<div class="MaleCalculation">
					<div class="Wood">
						<div class="CalcButton">
								<input type="button" value="Рассчитать" id="calculation" />
						</div><!--.CalcTitle-->
						<div class="Result" id="result">
							<input type="text" readonly="readonly" value="0" name="result"/>
						</div><!--.Result-->
						<div class="B"></div>
					</div><!--.Wood-->
				</div><!--.MaleCalculation-->
				<div class="B"></div>
			</div><!--.CalcForm-->
		</div>
	</div><!--.Main-->
</center>


Раньше всё работало, но вот обновил сайт и вставляю это всё на страничку, но калькулятор не работает - при нажатии кнопки "рассчитать" ничего не происходит. Может кто-нибудь сможет в этом разобраться и подсказать, что здесь не так?

PS. Извиняюсь за длинный код, но не нашел, как под спойлер спрятать.

Skipp 03.10.2012 10:07

А вы смотрели какие ошибки возникают?

lord2kim 03.10.2012 10:26

Innuenze, дайте ссылку на страницу с калькулятором

Innuenze 03.10.2012 10:34

Вот страница с калькулятором. Ошибок не возникает.
http://les-servis.ru/kalkulyator

Innuenze 04.10.2012 07:13

Ни у кого нет идей?

Skipp 04.10.2012 09:41

Всем не хочется разбираться в огромном количестве кода)

Innuenze 04.10.2012 10:16

Готов предоставить денежное вознаграждение...

Skipp 04.10.2012 14:13

Напишите в раздел форума "Работа", быть может помогут.

Innuenze 05.10.2012 08:08

Ну учитывая то, что мне этот калькулятор сделали за 500 рублей, а тут нужно только найти ошибку в коде (скорее всего не в самом js, а в форме вывода) то рублей 200. Ну если мало говорите сколько надо, подумаем.


Часовой пояс GMT +3, время: 14:32.