コードを回避eval
してよりわかりやすくする方法は次のとおりです。これが、コードが間違っている理由と、コメントで提案されているように基本に戻ってそこから開始する必要があるIMOの理由を理解するのに役立つことを願っています。MDNから始めることができます。
var units = {
milligram: 1000000,
carrat: 5000,
gram: 1000,
kilogram: 1,
ounce: 35.27399072294044,
pound: 2.2046244201837775,
stone: 0.157473,
ton: 0.001
};
var $input = $('#weight_value');
$('#weight_unit').change(function() {
var from = $input.data('unit'),
to = $(this).val(),
standard = $input.val() / units[ from ],
converted = standard * units[ to ];
$input.val( converted ).data('unit', to);
});
parseFloat
また、またはを使用していないことにも注意してくださいparseInt
。JavaScriptの型強制を利用しているだけです。
デモ
: http: //jsfiddle.net/zeByX/30/