javascript не обновляется при обмене

#javascript

#javascript

Вопрос:

Я пытаюсь заставить приведенный ниже javascript автоматически обновлять поле ввода (сантиметры) ниже, когда пользователь выбирает там высоту и дюймы. Он должен автоматически вычислять сантиметры, и это не работает.

 <script type=​"text/​javascript">​
updateHeights:function(type){
    if(type=='english'){
        var feet=parseInt($F('feet'));
        var inches=parseInt($F('inches'));
        var cm=((feet*12 inches)*2.54).round();
        $('centimeters').value=(feet?cm:'');
        } 
        else 
        {
        var cm=parseInt($F('centimeters'))||183;
    if(cm>241||cm<91)cm=183;
        var inches_total=(cm*0.3937).round();
        var feet=(inches_total/12).floor();
        var inches=inches_total%12;
        $('feet').value=feet;
        $('inches').value=inches;
        $('centimeters').value=cm;
    }
}
</script>

<label>Height:</label>
<select id="feet" name="add[feet]" onchange="Profile.updateHeights('english')">
    <option value=""></option>
    <option value="7">7</option>
    <option value="6">6</option>
    <option value="5">5</option>
    <option value="4">4</option>
    <option value="3">3</option>
</select>ft.amp;nbsp;amp;nbsp;
<select id="inches" name="add[inch]" onchange="Profile.updateHeights('english')">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
</select>in. oramp;nbsp;
<input id="centimeters" type="text" name="centimeters" maxlength="3" value="178" onchange="Profile.updateHeights('metric')" style="width: 30px;" />
amp;nbsp;centimeters
  

Комментарии:

1. Вы пробовали отладку? Выполняется ли ваш код вообще? Какая часть не работает?

2. $F() Функция где-нибудь определена? Можем ли мы предположить, что ваше updateHeights : function() ... это всего лишь одно свойство Profile объекта, которое не показано? Потому что, как опубликовано, это недопустимый синтаксис, и мы не можем сказать, что, если что-то не так с определением этого объекта. Кроме того, почему вы жестко запрограммировали мой рост (183 см)?

Ответ №1:

Предполагая, что это всего лишь выдержка из всего вашего кода, Profile является допустимым именем класса, а $ F где-то определен, вы упускаете несколько вещей.

Во-первых, вы выбираете по идентификатору, поэтому вам нужно включить знак # в свои селекторы. Во-вторых, вы пытаетесь проанализировать объект как целое число. Вам нужно использовать parseInt($("#feet").val()) для выбора значения, содержащегося во входных данных. Аналогично, чтобы установить значение, вы захотите использовать $("#centimeters").val(cm);