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

avgaz

Участник
Регистрация
18 Окт 2006
Сообщения
189
Реакции
7
Имеется вот такой код
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
 
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);">
 
Поправил но в этом случае тогда возникает проблема с 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>
 
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>
 
Ещё вопрос как сделать что бы с checkbox было к примеру при установке в checkbox галки добавлялось значение value а при снятии галки вычиталось onclick как бы только добавляет а при снятии не вычитает.
Подскажите плиз.
 
так используй тогда не onclick, а onchange (так по-моему правильнее) и в обработчике проверяй состояние checkbox'a и соответственно изменяй знак
 
Назад
Сверху