#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);