Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт подсчета коммунальных услуг (https://javascript.ru/forum/misc/55697-skript-podscheta-kommunalnykh-uslug.html)

Rise 12.05.2015 22:29

Цитата:

Хорошо, пусть даже сам код изменится, но как сделать замену?
Проще по новой написать чем в таком коде что-то менять.
Цитата:

jquery
А зачем она там?

dark_mc 13.05.2015 00:20

Цитата:

Сообщение от Rise (Сообщение 370465)
Проще по новой написать чем в таком коде что-то менять.

Полный код не мал и время как бы не позволяет переписать его, возможно вы подскажете все же каким способом можно будет заменить значение вара?

Или такого способа не существует?

kichSman 13.05.2015 01:58

Цитата:

Сообщение от dark_mc
заменить значение вара

в вашем случае только костылями

Цитата:

Сообщение от dark_mc
Полный код не мал и время как бы не позволяет переписать его

Если диплом не зависит от количества символов, то вот как будет выглядеть ваш код (привожу концепцию для экономии вашего времени), вместо вакханалии и с реализацией того, о чем говорил @Rise
<!--Форма - должна быть формой -->
<form id="form">
    <input name="svet" value="0.32300">
    <input name="otop" value="5">
    <input name="musor" value="6">
</form>

var form = document.querySelector('#form'),
    my_calc = {
        price: {
            svet: "0.32300",
            otop: "84.67",
            musor: "26.00"
        },
        load: function () {
            var str = localStorage['my_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['my_calc_price'] = JSON.stringify(this.price);
            return this;
        }
    };

form.addEventListener('change', function(){
    for(var key in my_calc.price){
        //тут проверка всей формы
        //присвоение значений
        my_calc.price[key] = this[key];
    }
    my_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);

my_calc.load().set();


Возможно есть ошибки, не проверял... Гранит науки должен грызться с трудом и потом ))

dark_mc 13.05.2015 12:25

Цитата:

Сообщение от kichSman (Сообщение 370492)
в вашем случае только костылями

Если диплом не зависит от количества символов, то вот как будет выглядеть ваш код (привожу концепцию для экономии вашего времени), вместо вакханалии и с реализацией того, о чем говорил @Rise

Как бы количество символов не зависит,зависит работоспособность кода)

Цитата:

Сообщение от kichSman (Сообщение 370492)
Возможно есть ошибки, не проверял... Гранит науки должен грызться с трудом и потом ))

Заменил я код Вашим примером, дописал все значения, подключил к калькулятору и ничего не вышло, думаю дело в связи между кодами, оно их не видит или не хочет видеть.

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 (Сообщение 370492)
Возможно есть ошибки, не проверял... Гранит науки должен грызться с трудом и потом ))

Само собой, но я сам учу этот язык и нет того кто мог бы подсказать что делать, вот форум это единственная штука где могут помочь. Вообще мне с трудом программирование дается, не знаю почему.

Rise 13.05.2015 12:56

dark_mc, а вы сами весь код калькулятора писали?

kichSman 13.05.2015 13:15

dark_mc,
Я не зря указал, что форма должна быть формой, вот и первый урок. Нужно пользоваться BOM-ом полностью, это снизит количество ошибок и размер лишнего кода.
...кратко, инпуты должны быть внутри формы

dark_mc 13.05.2015 13:58

Цитата:

Сообщение от Rise (Сообщение 370529)
dark_mc, а вы сами весь код калькулятора писали?

В интернете нашел код и переделал под себя.
Цитата:

Сообщение от kichSman (Сообщение 370531)
dark_mc,
Я не зря указал, что форма должна быть формой, вот и первый урок. Нужно пользоваться BOM-ом полностью, это снизит количество ошибок и размер лишнего кода.
...кратко, инпуты должны быть внутри формы

Спасибо,для меня это будет важным уроком!

У меня две формы:
1 - Там где пользователь сможет сам менять значения(ваш код).
2 - Форма калькулятора,там где идет сам подсчет.

Поместил я калькулятор в форму и ничего не происходит,нет подсчета, ничего не изменяет.

kichSman 13.05.2015 14:39

dark_mc,
т.е. вы имели ввиду, форму ввода данных пользователем, и графическое оформление результата расчета, верно?

dark_mc 13.05.2015 14:42

kichSman,
Да, именно это)

kichSman 13.05.2015 14:48

Поддержу Rise в вопросе. Вы действительно хотите написать код, или просто скопипастить?


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