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

Rise 13.05.2015 15:00

Цитата:

Сообщение от dark_mc (Сообщение 370523)
Вообще мне с трудом программирование дается, не знаю почему.

Потому что надо писать код самому. Начните сами писать калькулятор быстрее напишите чем в этом разберетесь, а мы подскажем.

dark_mc 13.05.2015 18:25

Хорошо господа, я рад что вы мне помогали, сейчас буду писать все с нуля...

Думаю переписать сам код калькулятора, а тот код с заменой оставить, там в принципе все мне понятно.

dark_mc 18.05.2015 21:07

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

Подскажите что поменять, что исправить. Почему оно не считает?

<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>

Endy 18.05.2015 21:26

dark_mc,
а почему в if-ах нету условий?)

dark_mc 19.05.2015 01:08

Вот, перепробовал все связи, ставил условие, не пашет и все, что я не правильно делаю в 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) писать.

Rise 19.05.2015 16:08

dark_mc,
<form oninput="calc(this)">
	<fieldset>
		<legend>Электричество</legend>
		<label>Тариф, руб./кВт*ч: <input type="text" name="svetTarif" value="0"></label>
		<label>Расход, кВт*ч: <input type="text" name="svetRashod" value="0"></label>
		<label>Расчет, руб.: <input type="text" name="svetRaschet" value="0" readonly></label>
	</fieldset>
	<fieldset>
		<legend>Отопление</legend>
		<label>Тариф, руб./м2: <input type="text" name="teploTarif" value="0"></label>
		<label>Площадь, м2: <input type="text" name="teploPloshad" value="0"></label>
		<label>Расчет, руб.: <input type="text" name="teploRaschet" value="0" readonly></label>
	</fieldset>
	<fieldset>
		<legend>Итого</legend>
		<input type="text" name="Itogo" value="0" readonly> руб.
	</fieldset>
</form>

<script>
function calc(form) {
	form.svetRaschet.value = (form.svetTarif.value * form.svetRashod.value).toFixed(2);
	form.teploRaschet.value = (form.teploTarif.value * form.teploPloshad.value).toFixed(2);
	form.Itogo.value = (+form.svetRaschet.value + +form.teploRaschet.value).toFixed(2);
} 
</script>

dark_mc 19.05.2015 16:29

Rise, весьма Вам благодарен. Даже как то не по себе, что код на столько мал и я не смог его решить вот таким способом. Буду учиться.


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