Сложения в чем ошибка?

Тема в разделе "JavaScript", создана пользователем avgaz, 8 мар 2013.

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

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Имеется вот такой код
    HTML:
    <script language="JavaScript">
    function nextCalc()
    {
      var baza=parseFloat(document.getElementById('bazanext').value);
      var komfort=parseFloat(document.getElementById('komfort').value);
      var s=baza+komfort;
      document.getElementById('PriceValue').innerHTML= '' + s + '';
    }
    </script>
    
    <body>
    
    <p>
            <b><font color="#FF6600" size="4">База:    </font></b>
            <select style="width: 200px;" id="bazanext" onchange="nextCalc();" name=""> 
     <option value="724000" selected="selected">Стандарт</option> 
     <option value="738400">Удлиненая</option>
     </select>&nbsp; </p>
            <table border="0" width="100%">
                <tr>
                    <td width="33%">
                    <p align="center"><b>Базовая 
                    </b> 
                    <input type="radio" id="komfort" value="0" name="R1" onClick="nextCalc();"><b><br>
                    &nbsp;</b></td>
                    <td width="33%">
                    <p align="center"><b>Комфорт 1 
                    </b> 
                    <input type="radio" id="komfort" value="3000" name="R1" onClick="nextCalc();"><b><br>&nbsp;</b></p></td>
                    <td width="33%">
                    <p align="center"><b>Комфорт 2 
                    </b> 
                    <input type="radio" id="komfort" value="4000" name="R1" onClick="nextCalc();"><b><br>&nbsp;</b></p>
                    
                    </td>
                </tr>
            </table>
            <p>&nbsp;</p>
    <b><font size="4" color="#FF6600">Стоимость</font><div id="PriceValue">724000</div><font size="4">руб </font></b>
    <p>&nbsp;</p>
    
    
    Но почему то даже если не выбрана radio то все равно прибавляет значение первой. Мне не обходимо что бы можно было выбрать любую radio кнопку одну и её значение прибавлялось к значению select
     
  2. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    1. id элемента должен быть уникальным
    2. document.getElementById('komfort').value;
    как Вы планировали определять из какого поля брать значение ? соответственно код берет из 1 , что есть 0
    3. используйте this

    Код:
    function nextCalc(t) {
      var baza=document.getElementById('bazanext').value;
      var komfort=t.value;
      var s= baza+komfort;
      document.getElementById('PriceValue').innerHTML= '' + s + '<br> '+ komfort +'';
    }
    <input type="radio" value="0" name="R1" onClick="nextCalc(this);">
     
    avgaz и Extalionez нравится это.
  3. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Поправил но в этом случае тогда возникает проблема с select если его выбирать то ругается что нет значения var komfort=t.value;
    HTML:
    <p>
            <b><font color="#FF6600" size="4">База:    </font></b>
            <select style="width: 200px;" id="bazanext" onchange="nextCalc();" name="">
    <option value="724000" selected="selected">Стандарт</option>
    <option value="738400">Удлиненая</option>
    </select>&nbsp; </p>
            <table border="0" width="100%">
                <tr>
                    <td width="33%">
                    <p align="center"><b>Базовая
                    </b>
                    <input type="radio" value="1000" name="R1" checked="checked" onClick="nextCalc(this);"><b><br>
                    &nbsp;</b></td>
                    <td width="33%">
                    <p align="center"><b>Комфорт 1
                    </b>
                    <input type="radio" value="3000" name="R1" onClick="nextCalc(this);"><b><br>&nbsp;</b></p></td>
                    <td width="33%">
                    <p align="center"><b>Комфорт 2
                    </b>
                    <input type="radio" value="4000" name="R1" onClick="nextCalc(this);"><b><br>&nbsp;</b></p>
                   
                    </td>
                </tr>
            </table>
            <p>&nbsp;</p>
    <b><font size="4" color="#FF6600">Стоимость</font><div id="PriceValue">724000</div><font size="4">руб </font></b>
    <p>&nbsp;</p>
     
  4. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    HTML:
    <script language="JavaScript">
    var komfort = 0;
    function nextCalc(t)
    {
      var baza=parseFloat(document.getElementById('bazanext').value);
      if(typeof t != 'undefined') komfort=parseFloat(t.value);
      var s=baza+komfort;
      document.getElementById('PriceValue').innerHTML= '' + s + '';
    }
    </script>
     
    <body>
     
    <p>
            <b><font color="#FF6600" size="4">База:    </font></b>
            <select style="width: 200px;" id="bazanext" onchange="nextCalc();" name="">
    <option value="724000" selected="selected">Стандарт</option>
    <option value="738400">Удлиненая</option>
    </select>&nbsp; </p>
            <table border="0" width="100%">
                <tr>
                    <td width="33%">
                    <p align="center"><b>Базовая
                    </b>
                    <input type="radio" value="0" name="R1" onClick="nextCalc(this);"><b><br>
                    &nbsp;</b></td>
                    <td width="33%">
                    <p align="center"><b>Комфорт 1
                    </b>
                    <input type="radio" value="3000" name="R1" onClick="nextCalc(this);"><b><br>&nbsp;</b></p></td>
                    <td width="33%">
                    <p align="center"><b>Комфорт 2
                    </b>
                    <input type="radio" value="4000" name="R1" onClick="nextCalc(this);"><b><br>&nbsp;</b></p>
                   
                    </td>
                </tr>
            </table>
            <p>&nbsp;</p>
    <b><font size="4" color="#FF6600">Стоимость</font><div id="PriceValue">724000</div><font size="4">руб </font></b>
    <p>&nbsp;</p>
     
    avgaz нравится это.
  5. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Ещё вопрос как сделать что бы с checkbox было к примеру при установке в checkbox галки добавлялось значение value а при снятии галки вычиталось onclick как бы только добавляет а при снятии не вычитает.
    Подскажите плиз.
     
  6. ВладимирТрой

    ВладимирТрой Постоялец

    Регистр.:
    29 янв 2013
    Сообщения:
    53
    Симпатии:
    19
    так используй тогда не onclick, а onchange (так по-моему правильнее) и в обработчике проверяй состояние checkbox'a и соответственно изменяй знак