Нужна помощь с js я вообще не шарю

Тема в разделе "JavaScript", создана пользователем dmx, 18 янв 2012.

Модераторы: ZiX
  1. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    676
    Симпатии:
    557
    Вот JS и форма :
    Код:
    <SCRIPT LANGUAGE="JavaScript">
     
    sum = 2500; //Цена за сруб 1м2
    fr=2500; // цена за фронтон 1m3
    vn=1500; // стоимость выноса
    stena=2500; //стоимость 1м2 5 стены и перегородок
    function getRadioGroupValue(radioGroupObj) // функция определения какой чекбокс выбран для установки сруба
    {
      for (var i=0; i < radioGroupObj.length; i++)
        if (radioGroupObj[i].checked) return radioGroupObj[i].value;
     
      return null;
    }
     
    function calculator(form) {//Функция подсчета
    drob = "."; //для дроби
    a = eval(form.a.value+drob+form.aa.value); //Присваем a значение из первого поля a (длина) и значение дробной части аа
    c = eval(form.b.value+drob+form.bb.value); //Присваем  значение из второго поля \ (ширина) и значение дробной части
    fm = eval(form.Fm.value+drob+form.Fmm.value); //Присваем a значение из первого поля перегородки дополнительные и значение дробной части перегородки
    b = 3; //высота
    z=0;// значение количества фронтонов
    n=4;// значение высоты фронтана
    v=0;// значение количества выносов
    var st = getRadioGroupValue(document.radioForm.topic2); // переменная да или нет для пятой стены
    d = (2*(a+c))*b*sum+((c*z*n*fr)/2)+(v*vn)+(stena*b*fm); //Присваем с значение плошади b и умножаем на стоимость 1м2
     
    stena_5=d+(b*c*stena);//
     
    var v = getRadioGroupValue(document.radioForm.topic1); // переменная да или нет для установки сруба
     
    if(v=="yes" && st =="yes"){
    yst=(stena_5/100)*40;// 40 процентов от общей стоимости всех выбранных параметров
    yst_res=stena_5+yst;//  итоговая ссума с установкой
    form.totall.value = yst_res;// вывод результата в форму
    }
    else if (v=="yes" && st =="no"){
    yst=(d/100)*50;// 40 процентов от общей стоимости всех выбранных параметров
    yst_res=d+yst;//  итоговая ссума с установкой
    form.totall.value = yst_res;// вывод результата в форму
    }
    else if (v=="no" && st =="yes"){
     
    form.totall.value = stena_5;// вывод результата в форму
    }
     
    else{form.totall.value = d;}
     
    }
    </SCRIPT>
     
     
    <form name="radioForm"><table width="650">
    <tr>
    <td>
    <tr><td>размер дома <strong>ДЛИННА</strong></td>
    <td width="300"><input  size="3"  maxlength="3" type="text" name="a"  onchange="this.value=this.value.replace(/([^0-9])/g,'');" onkeyup="var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;" onmousedown="this.value=this.value.replace(/([^0-9])/g,'');" value="0" />м<input type="text" name="aa" size="2" maxlength="2" onchange="this.value=this.value.replace(/([^0-9])/g,'');" onkeyup="var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;" onmousedown="this.value=this.value.replace(/([^0-9])/g,'');" value="0" />см</td>
    </tr>
    <tr>
    <td>размер дома <strong>ШИРИНА</strong></td>
     
    <td width="300"><input type="text" name="b" size="3" maxlength="3" onchange="this.value=this.value.replace(/([^0-9])/g,'');" onkeyup="var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;" onmousedown="this.value=this.value.replace(/([^0-9])/g,'');" value="0" />м<input type="text" name="bb" size="2" maxlength="2" onchange="this.value=this.value.replace(/([^0-9])/g,'');" onkeyup="var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;" onmousedown="this.value=this.value.replace(/([^0-9])/g,'');" value="0"/>см</td>
    </tr>
    <tr>
    <td>пятая стена (если есть по проекту)</td>
    <td width="300"><input name="topic2" value="yes" type="radio">Да
    <input name="topic2" value="no" type="radio" checked>Нет</td>
    </tr>
    <tr>
    <td>остальные перегородки <strong>(указывать в погонных метрах)</strong></td>
    <td width="300"><input name="Fm" size="2" type="text" maxlength="3" onchange="this.value=this.value.replace(/([^0-9])/g,'');" onkeyup="var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;" onmousedown="this.value=this.value.replace(/([^0-9])/g,'');" value="0"  />м<input name="Fmm" size="2" maxlength="3"  type="text" onchange="this.value=this.value.replace(/([^0-9])/g,'');" onkeyup="var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;" onmousedown="this.value=this.value.replace(/([^0-9])/g,'');" value="0" />см</td>
    </tr>
    <tr><td>Установка сруба</td>
    <td width="300"><input name="topic1" value="yes" type="radio">Да
    <input name="topic1" value="no" type="radio" checked>Нет</td>
    </tr>               
    <tr><td>Фронты рубленные</td>
    <td width="300"><input name="topic10" value="yes" type="radio">Да
    <input name="topic10" value="no" type="radio" checked>Нет</td>
    </tr>
    <tr><td>Обработка сруба антисептиком</td>
    <td width="300"><input name="topic100" value="yes" type="radio">Да
    <input name="topic100" value="no" type="radio" checked>Нет</td>
    </tr>
    <tr><td>Фундамент-ростверковый (ленточный, усиленный сваями)</td>
    <td width="300"><input name="topic1000" value="yes" type="radio">Да
    <input name="topic1000" value="no" type="radio" checked>Нет</td>
    </tr>
    <tr>
    <tr>
          <td width="500"><strong>ИТОГ</strong><input type="text" name="totall" size="20" maxlength="40">
    <tr>
    <td width="500"><input type="button" value="Рассчитать"  onClick="calculator(this.form)"> </td>
    </tr>
    </table>
    </form>
    Так как я в JS 0, помогите подправить и добавить (хотя -бы частично :(
    1. при выборе пятой стены калькулятор должен брать за основу ширину сруба(сейчас берет длину).
    2. Фундамент-ростверковый -> если ДА, то : ((ширина х2)+(длинна х2)+пятая стена)) х 4500
    3. рубленные фронтоны - > если ДА то: постоянное-3м(высота фронтона) х ширина сруба х2500
    4. Обработка сруба антисептиком -> если ДА , то : колькулятор должен считать предыдущию квадратуру стен
    (эта квадратура уже посчитана из предидущих пунктов) это х 2(так как обработка с 2-х сторон) и х60 рублей
    тоесть: м2(общее)х2х60рублей
    ______________________________
    могу даже заплатить 200 руб. :)
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    это основная формула для 5й стены где d-цена стен, фронтона и перегородок, b-высота стен, c- ширина стен (длинна как бы и не учитывается)
    А с остальными пунктами желательно подетальнее указать куда их включать и как учитывать
    Да... и к этому скрипту не все поля формы указаны... в частности не хватает полей длинны перегородок
     
    dmx нравится это.
  3. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    676
    Симпатии:
    557
    Да скрипт походу кривой напрочь ! Смотрел человек с фриланса.
    Не понятно как автор 5 стену высчитал по такой формуле :
    d = (2*(a+c))*b*sum+((c*z*n*fr)/2)+(v*vn)+(stena*b*fm);
    где
    а -длина дома
    с - это ширина
     
  4. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Вы бы просто дали математику расчета (имею ввиду первичные данные и формулы расчета), а уже это как то прикрутим к скрипту :)
    Как я понимаю должен быть отдельный расчет площади стен, перегородок, фронтона и соответственно сумм денег за них, а потом в зависимости от условий перемножить на коэффициенты и подсчитать в итоге общую сумму...
     
    dmx нравится это.