13.05.2015, 12:25
|
Интересующийся
|
|
Регистрация: 10.05.2015
Сообщений: 13
|
|
Сообщение от kichSman
|
в вашем случае только костылями
Если диплом не зависит от количества символов, то вот как будет выглядеть ваш код (привожу концепцию для экономии вашего времени), вместо вакханалии и с реализацией того, о чем говорил @Rise
|
Как бы количество символов не зависит,зависит работоспособность кода)
Сообщение от kichSman
|
Возможно есть ошибки, не проверял... Гранит науки должен грызться с трудом и потом ))
|
Заменил я код Вашим примером, дописал все значения, подключил к калькулятору и ничего не вышло, думаю дело в связи между кодами, оно их не видит или не хочет видеть.
var form = document.querySelector('#form'),
calc = {
price: {
svet: "0.32300",
svetno: "63",
gazyes: "1.7880",
gazno: "43.13",
hotyes: "27.76",
hotno: "15.81",
coldyes: "31.00",
coldno: "38.25",
otop: "84.67",
musor: "26.00"
},
load:
function () {
var str = localStorage['calc_price'];
this.price = JSON.parse(str);
return this;
},
set:
function(){
for(var key in this.price){
form.querySelector('input[name="'+key+'"]')
.value = this.price[key];
}
return this;
},
save:
function () {
localStorage['calc_price'] = JSON.stringify(this.price);
return this;
}
};
form.addEventListener('change', function(){
for(var key in calc.price){
calc.price[key] = this[key];
}
calc.save();
return false;
});
form.querySelector('input[name="svet"]')
.addEventListener('change', function(e){
if(!this.value || parseFloat(this.value) < 1){
e.preventDefault();
return false;
}
}, false);
calc.load().set();
Связь с "электричеством":
<input id="sS" style="width: 120px; " type="text" onfocus="changeFlag(0);" onkeyup="CalcSum(1);" onkeypress="return calc_price"></td> </tr>
Сообщение от kichSman
|
Возможно есть ошибки, не проверял... Гранит науки должен грызться с трудом и потом ))
|
Само собой, но я сам учу этот язык и нет того кто мог бы подсказать что делать, вот форум это единственная штука где могут помочь. Вообще мне с трудом программирование дается, не знаю почему.
Последний раз редактировалось dark_mc, 13.05.2015 в 12:29.
|
|
13.05.2015, 13:15
|
Аспирант
|
|
Регистрация: 16.10.2009
Сообщений: 69
|
|
dark_mc,
Я не зря указал, что форма должна быть формой, вот и первый урок. Нужно пользоваться BOM-ом полностью, это снизит количество ошибок и размер лишнего кода.
...кратко, инпуты должны быть внутри формы
|
|
13.05.2015, 13:58
|
Интересующийся
|
|
Регистрация: 10.05.2015
Сообщений: 13
|
|
Сообщение от Rise
|
dark_mc, а вы сами весь код калькулятора писали?
|
В интернете нашел код и переделал под себя.
Сообщение от kichSman
|
dark_mc,
Я не зря указал, что форма должна быть формой, вот и первый урок. Нужно пользоваться BOM-ом полностью, это снизит количество ошибок и размер лишнего кода.
...кратко, инпуты должны быть внутри формы
|
Спасибо,для меня это будет важным уроком!
У меня две формы:
1 - Там где пользователь сможет сам менять значения(ваш код).
2 - Форма калькулятора,там где идет сам подсчет.
Поместил я калькулятор в форму и ничего не происходит,нет подсчета, ничего не изменяет.
|
|
13.05.2015, 14:39
|
Аспирант
|
|
Регистрация: 16.10.2009
Сообщений: 69
|
|
dark_mc,
т.е. вы имели ввиду, форму ввода данных пользователем, и графическое оформление результата расчета, верно?
|
|
13.05.2015, 14:42
|
Интересующийся
|
|
Регистрация: 10.05.2015
Сообщений: 13
|
|
kichSman,
Да, именно это)
|
|
13.05.2015, 14:48
|
Аспирант
|
|
Регистрация: 16.10.2009
Сообщений: 69
|
|
Поддержу Rise в вопросе. Вы действительно хотите написать код, или просто скопипастить?
|
|
13.05.2015, 18:25
|
Интересующийся
|
|
Регистрация: 10.05.2015
Сообщений: 13
|
|
Хорошо господа, я рад что вы мне помогали, сейчас буду писать все с нуля...
Думаю переписать сам код калькулятора, а тот код с заменой оставить, там в принципе все мне понятно.
Последний раз редактировалось dark_mc, 13.05.2015 в 19:38.
|
|
18.05.2015, 21:07
|
Интересующийся
|
|
Регистрация: 10.05.2015
Сообщений: 13
|
|
Вот сделал форму, написал инпуты для ввода значений пользователем(тарифы), инпуты для расчета, ну и итог.
Сделал связь, прошелся по коду, должно работать.
Подскажите что поменять, что исправить. Почему оно не считает?
<form name="test">
Тарифы:
<br>
<input id="S1" value="0.32300" type="text" onkeyup="Sum" onkeypress="return isNumberKey(event)">
<input id="S2" value="63" type="text" onkeyup="Sum" onkeypress="return isNumberKey(event)">
<br>
Расчет:
<br>
<input id="sS" type="text" onkeyup="Sum" onkeypress="return isNumberKey(event)">
<input id="sE" type="text" onkeyup="Sum" onkeypress="return isNumberKey(event)">
<br>
Итог:
<br>
<input id="sum" readonly="readonly" type="text" onkeyup="Sum">
</form>
<script>
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 43 || charCode > 57))
return false;
return true;
}
</script>
<script>
function Sum() {
if () {
document.getElementById('sS').value = sE * S1.toFixed(2);
}
else if () {
document.getElementById('sS').value = sE * S1.toFixed(2);
}
else if ()
{
var sS = document.getElementById('sS').value;
if () {
document.getElementById('sE').value = sS / S1.toFixed(2);
}
else if () {
document.getElementById('sE').value = sS / S2.toFixed(2);
}
}
var s = 0;
var sum = 0;
if (document.getElementById('sS').value != null) {
s = document.getElementById('sS').value;
}
sum = parseFloat(Number(s));
document.getElementById('sum').value = parseFloat(sum).toFixed(2);
}
</script>
Последний раз редактировалось dark_mc, 18.05.2015 в 21:26.
|
|
18.05.2015, 21:26
|
Аспирант
|
|
Регистрация: 15.05.2015
Сообщений: 41
|
|
dark_mc,
а почему в if-ах нету условий?)
|
|
19.05.2015, 01:08
|
Интересующийся
|
|
Регистрация: 10.05.2015
Сообщений: 13
|
|
Вот, перепробовал все связи, ставил условие, не пашет и все, что я не правильно делаю в if? помогите пожалуйста.
<form name="test">
Тарифы:
<br>
<input id="S1" value="0.32300" type="text" onkeyup="Summ" onkeypress="return isNumberKey(event)">
<input id="S2" value="63" type="text" onkeyup="Summ" onkeypress="return isNumberKey(event)">
<br>
Расчет:
<br>
<input id="sS" type="text" onkeyup="Summ" onkeypress="return isNumberKey(event)">
<input id="sE" type="text" onkeyup="Summ" onkeypress="return isNumberKey(event)">
<br>
Итог:
<br>
<input id="sum" readonly="readonly" type="text" onkeyup="Summ" onkeypress="return isNumberKey(event)">
</form>
<script>
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 43 || charCode > 57))
return false;
return true;
}
</script>
<script>
function Summ(index) {
if (test) {
document.getElementById('sS').value = sE * S1.toFixed(2);
}
else if (test) {
document.getElementById('sS').value = sE * S1.toFixed(2);
}
else if (index)
{
var sS = document.getElementById('sS').value;
if (test) {
document.getElementById('sE').value = sS / S1.toFixed(2);
}
else if (test) {
document.getElementById('sE').value = sS / S2.toFixed(2);
}
}
var s = 0;
var sum = 0;
if (document.getElementById('sS').value != null)
{
s = document.getElementById('sS').value;
}
sum = parseFloat(Number(s));
document.getElementById('sum').value = parseFloat(sum).toFixed(2);
}
</script>
П.С. Я знаю что в иф не надо (test) писать.
|
|
|
|